2100
Can bars have a grey backcolor and black border color for a summary-bar (EBN)

/*
	Copy and paste the following directives to your header file as
	it defines the namespace 'EXG2ANTTLib' for the library: 'ExG2antt 1.0 Control Library'

	#import <ExG2antt.dll>
	using namespace EXG2ANTTLib;
*/
EXG2ANTTLib::IG2anttPtr spG2antt1 = GetDlgItem(IDC_G2ANTT1)->GetControlUnknown();
spG2antt1->BeginUpdate();
EXG2ANTTLib::IAppearancePtr var_Appearance = spG2antt1->GetVisualAppearance();
	var_Appearance->PutRenderType(-2);
	var_Appearance->Add(1,_bstr_t("gBFLBCJwBAEHhEJAAEhABN0GACAADACAxRDAMgBQKAAzQFAYahuGSGAAGMYxQgmFgAQhFcZQSKUOQTDKMIziYBYJhEMQyDAAUIjOKsIhkGYcZAGQBJCjWGodQLOEgwH") +
"IERQjEyUJAGGQIHhyPYbUbGUpQHKkeRtGqgBgoKhKEouNYgAbGYIwTRsdyfDSXBpEWwbDgkNQwWTDNoRDIUQStCysaYjOpnfrUAJ1P7FdQ1NJkXRhGSSK7maapaiCSZ6" +
"STCMj1FhVKSNJ7DQKhGpgKh/ApgYpQOK4fLNXyRBK4QAyKA6bgPFZOZbFViaXY1V5bNKrcjhHQwAyHJ4XXRdV4YRAkUT4GqiJKGSYcQhuXZWbRqO6ABhef6DRThc6jKp" +
"FHIE4llEcojHqSZNgoIxnlgd5thsLREleL43gsYZ9BkaAYkMAgAm+CxGDWWAtiKCRfjcdRgHoHYnicUwgAIEIREAaQYkcQZUHIGRUDQJBOEYRAhDYCxGgMZAkCgdYQha" +
"XQIAYERwQuahXggdgeG6VZ4H4IhdiIGIOB8YIiGiHZZgqYpGF4KYHiKCI+CAU5jCiTQ2g0YhEFyax4gABAEIC");
	var_Appearance->Add(2,_bstr_t("gBFLBCJwBAEHhEJAAEhABU0IQAAYAQGKQYhiAKBQAGaAoDDcMA4QwAAyjAKMEwsACEIrjKCRShyCYZRhGcTAJBMIhiGQYAChEZxVhEMgzDjIAxSJAcQRFESaAABGCQG") +
"h+N4/S4NIi0CIsZQjCaiZ7pKA5bgMCo+UrNMixZQVCSOGChYRpCaZWpGGodQRUFbVHAlKypJKCKrEWSrDhuYAAW7XM7yBS1TzVNSuLZtaLqSroAJ1WTWMB0Ra8NzZEKf" +
"aZACj4arKejrRDCMAggI=");
	var_Appearance->Add(3,_bstr_t("gBFLBCJwBAEHhEJAAEhABN8GACAADACAxRDgMQBQKAAzQFAcDBvBgABiHEZoJhUAIIRZGMIjFDcEwxDSMY7jcYAFgkNQwCUtcBIJDEMIoAJLIwyBKkNQ5AabYrmWJpM") +
"gOEAyDSJM70DCEThLD4aZJnOa5ZjmH5LRBQdBRXQMYwIGCiZQpeKqbgMBoJApCIJxdBNLAAf60LLtGJaSpKZouViJNjSBD4HQTL6BQwsKxIDqaaD/WpgFuLTjiRImShc" +
"MQXJYFbwTOyBbDjG7rJr+FptYRbdYYRQ8dy7Cywa6pOa8YwacotZrAdDXHTmHw1PTRNDmTRYRwfKqJZxieqwHoMLYgAC8Ni3OaoDAiCRQGiYZyHKaRSwPBInIYIIjeRg" +
"zBSAYKCEOySEodZbjybo0HefwfhMLQDnKeg9D6LwsCeV5unYQJYH8Lxvj+a5jgSfIYH8T43hOcZ5H+X4nh2fB6F+aABnOAIfFgFgGgGH43nICoCl+eA1n0fBhAgVZ5gS" +
"HoID4FoDCCCBqBuBYUjgfgigGURYg4JoJmKCBFBaChikiNgVEYYpokYMoMCMKJWCkcIjgiZg6E0Do3gUASAg=");
spG2antt1->GetColumns()->Add(L"Task");
EXG2ANTTLib::IChartPtr var_Chart = spG2antt1->GetChart();
	var_Chart->PutPaneWidth(VARIANT_FALSE,128);
	var_Chart->PutFirstVisibleDate(COleDateTime(2001,1,1,0,00,00).operator DATE());
	EXG2ANTTLib::IBarPtr var_Bar = var_Chart->GetBars()->GetItem("Task");
		var_Bar->PutDef(EXG2ANTTLib::exBarHAlignCaption,long(18));
		var_Bar->PutColor(0x1000000);
	EXG2ANTTLib::IBarPtr var_Bar1 = var_Chart->GetBars()->GetItem("Summary");
		var_Bar1->PutDef(EXG2ANTTLib::exBarHAlignCaption,long(18));
		var_Bar1->PutColor(0x2000000);
	EXG2ANTTLib::IBarPtr var_Bar2 = var_Chart->GetBars()->Copy(L"Summary",L"SummaryN");
		var_Bar2->PutDef(EXG2ANTTLib::exBarHAlignCaption,long(18));
		var_Bar2->PutColor(0x3000000);
EXG2ANTTLib::IItemsPtr var_Items = spG2antt1->GetItems();
	long hSummaryJ = var_Items->AddItem("Summary A");
	var_Items->AddBar(hSummaryJ,"Summary",COleDateTime(2001,1,2,0,00,00).operator DATE(),COleDateTime(2001,1,2,0,00,00).operator DATE(),"J",vtMissing);
	long hTaskJ = var_Items->InsertItem(hSummaryJ,vtMissing,"Task A.1");
	var_Items->AddBar(hTaskJ,"Task",COleDateTime(2001,1,2,0,00,00).operator DATE(),COleDateTime(2001,1,5,0,00,00).operator DATE(),"J1",vtMissing);
	hTaskJ = var_Items->InsertItem(hSummaryJ,vtMissing,"Task A.2");
	var_Items->AddBar(hTaskJ,"Task",COleDateTime(2001,1,4,0,00,00).operator DATE(),COleDateTime(2001,1,8,0,00,00).operator DATE(),"J2",vtMissing);
	var_Items->DefineSummaryBars(hSummaryJ,"J",-1,"<*>");
	long hSummaryK = var_Items->AddItem("Summary B");
	var_Items->AddBar(hSummaryK,"Summary",COleDateTime(2001,1,2,0,00,00).operator DATE(),COleDateTime(2001,1,2,0,00,00).operator DATE(),"K",vtMissing);
	long hTaskK = var_Items->InsertItem(hSummaryK,vtMissing,"Task B.1");
	var_Items->AddBar(hTaskK,"Task",COleDateTime(2001,1,2,0,00,00).operator DATE(),COleDateTime(2001,1,5,0,00,00).operator DATE(),"K1",vtMissing);
	hTaskK = var_Items->InsertItem(hSummaryK,vtMissing,"Task B.2");
	var_Items->AddBar(hTaskK,"Task",COleDateTime(2001,1,4,0,00,00).operator DATE(),COleDateTime(2001,1,8,0,00,00).operator DATE(),"K2",vtMissing);
	var_Items->DefineSummaryBars(hSummaryK,"K",-1,"<*>");
	long hSummaryN = var_Items->AddItem("Summary C");
	var_Items->AddBar(hSummaryN,"SummaryN",COleDateTime(2001,1,2,0,00,00).operator DATE(),COleDateTime(2001,1,2,0,00,00).operator DATE(),"SN",vtMissing);
	hTaskK = var_Items->InsertItem(hSummaryN,vtMissing,"Task B.1");
	var_Items->AddBar(hTaskK,"Task",COleDateTime(2001,1,2,0,00,00).operator DATE(),COleDateTime(2001,1,5,0,00,00).operator DATE(),"N1",vtMissing);
	hTaskK = var_Items->InsertItem(hSummaryN,vtMissing,"Task B.2");
	var_Items->AddBar(hTaskK,"Task",COleDateTime(2001,1,4,0,00,00).operator DATE(),COleDateTime(2001,1,8,0,00,00).operator DATE(),"N2",vtMissing);
	var_Items->DefineSummaryBars(hSummaryN,"SN",-1,"<*>");
	var_Items->PutItemBar(0,"<K*>",EXG2ANTTLib::exBarColor,long(255));
	var_Items->PutItemBar(0,"<N*>",EXG2ANTTLib::exBarColor,long(8421504));
	var_Items->PutExpandItem(0,VARIANT_TRUE);
spG2antt1->EndUpdate();

2099
How can I display UNICODE characters

/*
	Copy and paste the following directives to your header file as
	it defines the namespace 'EXG2ANTTLib' for the library: 'ExG2antt 1.0 Control Library'

	#import <ExG2antt.dll>
	using namespace EXG2ANTTLib;
*/
EXG2ANTTLib::IG2anttPtr spG2antt1 = GetDlgItem(IDC_G2ANTT1)->GetControlUnknown();
spG2antt1->BeginUpdate();
spG2antt1->GetChart()->PutPaneWidth(VARIANT_TRUE,0);
/*
	Copy and paste the following directives to your header file as
	it defines the namespace 'stdole' for the library: 'OLE Automation'

	#import <stdole2.tlb>
*/
stdole::FontPtr var_StdFont = spG2antt1->GetFont();
	var_StdFont->PutName(L"Arial Unicode");
	var_StdFont->PutSize(_variant_t(long(22)));
spG2antt1->PutHeaderVisible(EXG2ANTTLib::exHeaderHidden);
spG2antt1->PutDefaultItemHeight(48);
((EXG2ANTTLib::IColumnPtr)(spG2antt1->GetColumns()->Add(L"")))->PutDef(EXG2ANTTLib::exCellValueFormat,long(1));
EXG2ANTTLib::IItemsPtr var_Items = spG2antt1->GetItems();
	var_Items->AddItem("Ӓӓ");
	var_Items->AddItem("ᦜᦝ;ᦞ");
	var_Items->AddItem("ɮɭ;ɯ");
	var_Items->AddItem("勳勴勵勶");
	var_Items->PutFormatCell(var_Items->AddItem(spG2antt1->GetVersion()),long(0),L"(value lfind `UNICODE`) < 0 ? `<fgcolor=FF0000><b>!UNICODE!</b> version</fgcolor> required: ` + value : `` ");
spG2antt1->EndUpdate();

2098
How can I display 12-hour time (method 2)

/*
	Copy and paste the following directives to your header file as
	it defines the namespace 'EXG2ANTTLib' for the library: 'ExG2antt 1.0 Control Library'

	#import <ExG2antt.dll>
	using namespace EXG2ANTTLib;
*/
EXG2ANTTLib::IG2anttPtr spG2antt1 = GetDlgItem(IDC_G2ANTT1)->GetControlUnknown();
spG2antt1->BeginUpdate();
EXG2ANTTLib::IChartPtr var_Chart = spG2antt1->GetChart();
	var_Chart->PutFirstVisibleDate(COleDateTime(2001,1,1,0,00,00).operator DATE());
	var_Chart->PutPaneWidth(VARIANT_FALSE,0);
	var_Chart->PutLevelCount(2);
	var_Chart->GetLevel(0)->PutLabel(long(4096));
	EXG2ANTTLib::ILevelPtr var_Level = var_Chart->GetLevel(1);
		var_Level->PutUnit(EXG2ANTTLib::exHour);
		var_Level->PutFormatLabel(L"(0 := hour(dvalue)) < 12 ? ( `<fgcolor=808080>` + ( =:0 = 0 ? 12 : =:0 ) + `</fgcolor>` ) : (=:0 - 12)");
spG2antt1->EndUpdate();

2097
How can I display 12-hour time (method 1)

/*
	Copy and paste the following directives to your header file as
	it defines the namespace 'EXG2ANTTLib' for the library: 'ExG2antt 1.0 Control Library'

	#import <ExG2antt.dll>
	using namespace EXG2ANTTLib;
*/
EXG2ANTTLib::IG2anttPtr spG2antt1 = GetDlgItem(IDC_G2ANTT1)->GetControlUnknown();
spG2antt1->BeginUpdate();
EXG2ANTTLib::IChartPtr var_Chart = spG2antt1->GetChart();
	var_Chart->PutFirstVisibleDate(COleDateTime(2001,1,1,0,00,00).operator DATE());
	var_Chart->PutPaneWidth(VARIANT_FALSE,0);
	var_Chart->PutLevelCount(2);
	var_Chart->GetLevel(0)->PutLabel(long(4096));
	var_Chart->GetLevel(1)->PutLabel("<%h12%>");
spG2antt1->EndUpdate();

2096
How do I scale to hours

/*
	Copy and paste the following directives to your header file as
	it defines the namespace 'EXG2ANTTLib' for the library: 'ExG2antt 1.0 Control Library'

	#import <ExG2antt.dll>
	using namespace EXG2ANTTLib;
*/
EXG2ANTTLib::IG2anttPtr spG2antt1 = GetDlgItem(IDC_G2ANTT1)->GetControlUnknown();
spG2antt1->BeginUpdate();
EXG2ANTTLib::IChartPtr var_Chart = spG2antt1->GetChart();
	var_Chart->PutFirstVisibleDate(COleDateTime(2001,1,1,0,00,00).operator DATE());
	var_Chart->PutPaneWidth(VARIANT_FALSE,0);
	var_Chart->PutLevelCount(2);
	var_Chart->GetLevel(0)->PutLabel(long(4096));
	var_Chart->GetLevel(1)->PutLabel(long(65536));
spG2antt1->EndUpdate();

2095
How do I display the position of the item with 0-padding

/*
	Copy and paste the following directives to your header file as
	it defines the namespace 'EXG2ANTTLib' for the library: 'ExG2antt 1.0 Control Library'

	#import <ExG2antt.dll>
	using namespace EXG2ANTTLib;
*/
EXG2ANTTLib::IG2anttPtr spG2antt1 = GetDlgItem(IDC_G2ANTT1)->GetControlUnknown();
spG2antt1->BeginUpdate();
((EXG2ANTTLib::IColumnPtr)(spG2antt1->GetColumns()->Add(L"Items")))->PutFormatColumn(L"((1 apos ``) lpad `00`) + `. `  + value");
EXG2ANTTLib::IItemsPtr var_Items = spG2antt1->GetItems();
	var_Items->AddItem("Item A");
	var_Items->AddItem("Item B");
	var_Items->AddItem("Item C");
	var_Items->AddItem("Item D");
spG2antt1->EndUpdate();

2094
Can I format the label in row 3 below to show day numbers, only for Mondays each week (sample 2)

/*
	Copy and paste the following directives to your header file as
	it defines the namespace 'EXG2ANTTLib' for the library: 'ExG2antt 1.0 Control Library'

	#import <ExG2antt.dll>
	using namespace EXG2ANTTLib;
*/
EXG2ANTTLib::IG2anttPtr spG2antt1 = GetDlgItem(IDC_G2ANTT1)->GetControlUnknown();
EXG2ANTTLib::IChartPtr var_Chart = spG2antt1->GetChart();
	var_Chart->PutPaneWidth(VARIANT_FALSE,0);
	var_Chart->PutFirstVisibleDate(COleDateTime(2009,1,31,0,00,00).operator DATE());
	var_Chart->PutLevelCount(3);
	var_Chart->PutFirstWeekDay(EXG2ANTTLib::exMonday);
	EXG2ANTTLib::ILevelPtr var_Level = var_Chart->GetLevel(0);
		var_Level->PutLabel("<%mmmm%> <%yyyy%>");
		var_Level->PutAlignment(EXG2ANTTLib::CenterAlignment);
		var_Level->PutUnit(EXG2ANTTLib::exMonth);
	EXG2ANTTLib::ILevelPtr var_Level1 = var_Chart->GetLevel(1);
		var_Level1->PutUnit(EXG2ANTTLib::exWeek);
		var_Level1->PutLabel("Week <%ww%>");
		var_Level1->PutAlignment(EXG2ANTTLib::CenterAlignment);
	EXG2ANTTLib::ILevelPtr var_Level2 = var_Chart->GetLevel(2);
		var_Level2->PutUnit(EXG2ANTTLib::exDay);
		var_Level2->PutFormatLabel(L"weekday(dvalue) = 1 ? day(dvalue): ''");
	var_Chart->PutUnitWidth(23);

2093
Can I format the label in row 3 below to show day numbers, only for Mondays each week (sample 1)

/*
	Copy and paste the following directives to your header file as
	it defines the namespace 'EXG2ANTTLib' for the library: 'ExG2antt 1.0 Control Library'

	#import <ExG2antt.dll>
	using namespace EXG2ANTTLib;
*/
EXG2ANTTLib::IG2anttPtr spG2antt1 = GetDlgItem(IDC_G2ANTT1)->GetControlUnknown();
EXG2ANTTLib::IChartPtr var_Chart = spG2antt1->GetChart();
	var_Chart->PutPaneWidth(VARIANT_FALSE,0);
	var_Chart->PutFirstVisibleDate(COleDateTime(2009,1,31,0,00,00).operator DATE());
	var_Chart->PutLevelCount(3);
	var_Chart->PutFirstWeekDay(EXG2ANTTLib::exMonday);
	EXG2ANTTLib::ILevelPtr var_Level = var_Chart->GetLevel(0);
		var_Level->PutLabel("<%mmmm%> <%yyyy%>");
		var_Level->PutAlignment(EXG2ANTTLib::CenterAlignment);
		var_Level->PutUnit(EXG2ANTTLib::exMonth);
	EXG2ANTTLib::ILevelPtr var_Level1 = var_Chart->GetLevel(1);
		var_Level1->PutUnit(EXG2ANTTLib::exWeek);
		var_Level1->PutLabel("Week <%ww%>");
		var_Level1->PutAlignment(EXG2ANTTLib::CenterAlignment);
	EXG2ANTTLib::ILevelPtr var_Level2 = var_Chart->GetLevel(2);
		var_Level2->PutUnit(EXG2ANTTLib::exDay);
		var_Level2->PutFormatLabel(L"weekday(dvalue) = 1 ? value : ''");
	var_Chart->PutUnitWidth(23);

2092
How can I change the caption for all bars

/*
	Copy and paste the following directives to your header file as
	it defines the namespace 'EXG2ANTTLib' for the library: 'ExG2antt 1.0 Control Library'

	#import <ExG2antt.dll>
	using namespace EXG2ANTTLib;
*/
EXG2ANTTLib::IG2anttPtr spG2antt1 = GetDlgItem(IDC_G2ANTT1)->GetControlUnknown();
spG2antt1->BeginUpdate();
spG2antt1->GetColumns()->Add(L"Tasks");
EXG2ANTTLib::IChartPtr var_Chart = spG2antt1->GetChart();
	var_Chart->PutFirstVisibleDate(COleDateTime(2017,8,1,0,00,00).operator DATE());
	var_Chart->PutLevelCount(2);
	var_Chart->PutPaneWidth(VARIANT_FALSE,128);
	EXG2ANTTLib::IBarPtr var_Bar = var_Chart->GetBars()->Add(L"Task%Progress");
		var_Bar->PutShortcut(L"Task");
		var_Bar->PutDef(EXG2ANTTLib::exBarShowPercentCaption,VARIANT_TRUE);
EXG2ANTTLib::IItemsPtr var_Items = spG2antt1->GetItems();
	var_Items->AddBar(var_Items->AddItem("Task 1"),"Task",COleDateTime(2017,8,2,0,00,00).operator DATE(),COleDateTime(2017,8,6,0,00,00).operator DATE(),vtMissing,vtMissing);
	var_Items->AddBar(var_Items->AddItem("Task 2"),"Task",COleDateTime(2017,8,3,0,00,00).operator DATE(),COleDateTime(2017,8,9,0,00,00).operator DATE(),vtMissing,vtMissing);
	var_Items->AddBar(var_Items->AddItem("Task 3"),"Task",COleDateTime(2017,8,4,0,00,00).operator DATE(),COleDateTime(2017,8,13,0,00,00).operator DATE(),vtMissing,vtMissing);
	var_Items->AddBar(var_Items->AddItem("Task 4"),"Task",COleDateTime(2017,8,5,0,00,00).operator DATE(),COleDateTime(2017,8,16,0,00,00).operator DATE(),vtMissing,vtMissing);
	var_Items->PutItemBar(0,"<*>",EXG2ANTTLib::exBarShowPercentCaption,VARIANT_FALSE);
	var_Items->PutItemBar(0,"<*>",EXG2ANTTLib::exBarCaption,"<%= %C0 replace `Task` with `Task<off 4><b>` %>");
	var_Items->PutItemBar(0,"<*>",EXG2ANTTLib::exBarHAlignCaption,long(18));
spG2antt1->EndUpdate();

2091
Can't get the +/- to be displayed on a divider item. What else can I do

/*
	Copy and paste the following directives to your header file as
	it defines the namespace 'EXG2ANTTLib' for the library: 'ExG2antt 1.0 Control Library'

	#import <ExG2antt.dll>
	using namespace EXG2ANTTLib;
*/
EXG2ANTTLib::IG2anttPtr spG2antt1 = GetDlgItem(IDC_G2ANTT1)->GetControlUnknown();
spG2antt1->BeginUpdate();
spG2antt1->PutLinesAtRoot(EXG2ANTTLib::exLinesAtRoot);
spG2antt1->PutDrawGridLines(EXG2ANTTLib::exAllLines);
spG2antt1->PutTreeColumnIndex(0);
spG2antt1->PutMarkSearchColumn(VARIANT_FALSE);
spG2antt1->PutFullRowSelect(EXG2ANTTLib::exColumnSel);
spG2antt1->PutHeaderAppearance(EXG2ANTTLib::AppearanceEnum(0xfffffff8 | EXG2ANTTLib::Bump | EXG2ANTTLib::Sunken));
spG2antt1->GetChart()->PutPaneWidth(VARIANT_TRUE,0);
EXG2ANTTLib::IColumnsPtr var_Columns = spG2antt1->GetColumns();
	((EXG2ANTTLib::IColumnPtr)(var_Columns->Add(L"C1")))->PutWidth(32);
	((EXG2ANTTLib::IColumnPtr)(var_Columns->Add(L"C2")))->PutFormatColumn(L"1 index ``");
EXG2ANTTLib::IItemsPtr var_Items = spG2antt1->GetItems();
	long h = var_Items->AddItem("Cell 1");
	var_Items->PutCellSingleLine(h,long(1),EXG2ANTTLib::exCaptionWordWrap);
	h = var_Items->AddItem("This is bit of text merges all cells in the item (divider shows no +/-)");
	var_Items->PutItemDivider(h,0);
	var_Items->PutItemBackColor(h,RGB(240,240,240));
	var_Items->PutItemDividerLine(h,EXG2ANTTLib::EmptyLine);
	var_Items->PutCellHAlignment(h,long(0),EXG2ANTTLib::CenterAlignment);
	var_Items->InsertItem(h,vtMissing,"Child 1");
	var_Items->InsertItem(h,vtMissing,"Child 2");
	var_Items->PutExpandItem(h,VARIANT_TRUE);
	h = var_Items->AddItem("Cell 3");
	h = var_Items->AddItem("This is bit of text merges all cells in the item (merge shows +/-)");
	var_Items->PutItemBackColor(h,RGB(240,240,240));
	var_Items->PutCellMerge(h,long(0),long(1));
	var_Items->InsertItem(h,vtMissing,"Child 3");
	var_Items->InsertItem(h,vtMissing,"Child 4");
	var_Items->PutExpandItem(h,VARIANT_TRUE);
spG2antt1->EndUpdate();

2090
How can I display one or more columns on the same bar

// AddGroupItem event - Occurs after a new Group Item has been inserted to Items collection.
void OnAddGroupItemG2antt1(long   Item)
{
	/*
		Copy and paste the following directives to your header file as
		it defines the namespace 'EXG2ANTTLib' for the library: 'ExG2antt 1.0 Control Library'
		#import <ExG2antt.dll>
		using namespace EXG2ANTTLib;
	*/
	EXG2ANTTLib::IG2anttPtr spG2antt1 = GetDlgItem(IDC_G2ANTT1)->GetControlUnknown();
	EXG2ANTTLib::IItemsPtr var_Items = spG2antt1->GetItems();
		var_Items->PutItemDividerLine(Item,EXG2ANTTLib::EmptyLine);
		var_Items->AddBar(Item,"Summary",COleDateTime(2017,12,2,0,00,00).operator DATE(),COleDateTime(2017,12,2,0,00,00).operator DATE(),vtMissing,vtMissing);
		var_Items->DefineSummaryBars(Item,"",-3,"");
		long l = var_Items->GetGroupItem(Item);
		var_Items->PutCellSingleLine(Item,l,EXG2ANTTLib::exCaptionWordWrap);
		var_Items->PutCellBold(Item,l,VARIANT_TRUE);
		var_Items->PutItemBackColor(Item,RGB(190,190,190));
	spG2antt1->GetChart()->PutItemBackColor(Item,RGB(190,190,190));
}

// AddItem event - Occurs after a new Item has been inserted to Items collection.
void OnAddItemG2antt1(long   Item)
{
	EXG2ANTTLib::IG2anttPtr spG2antt1 = GetDlgItem(IDC_G2ANTT1)->GetControlUnknown();
	spG2antt1->GetItems()->AddBar(Item,"Task",COleDateTime(2017,12,4,0,00,00).operator DATE(),COleDateTime(2017,12,10,0,00,00).operator DATE(),vtMissing,vtMissing);
}

EXG2ANTTLib::IG2anttPtr spG2antt1 = GetDlgItem(IDC_G2ANTT1)->GetControlUnknown();
spG2antt1->BeginUpdate();
spG2antt1->GetVisualAppearance()->Add(1,_bstr_t("gBFLBCJwBAEHhEJAAEhABOUGACAADACAxRDgMQBQKAAzAJBIYhiG4cYCgMZhXDOCYXABCEYRXBIZQ7BKNIxjSJwFgmEgADCMQwAFBIbhrE4ZBjHGQRUgyI43RhHUBzV") +
"IUBxDEaTZLlEYJBgeHYhDJPcaUVDcWQHGyeZwjSgpKoWSJIU5NcggPDgEwTKCmKlTAKoSzJMyEmwWRAdVTZLSEaxierKPhyWT/XgAF4PfDFKRXFqXY5mKZJFqKOI8TxI" +
"NgxPQMGyrBqraLqKwQGrGCQKSBhUZ3dS2JR3OSlYRuQAMVgOXoDZhPWZXbDtSzPE63NgtOR5DiGWalABoeoxRa9cz3ViCJSrGTqIoINIzZLHFQbPpdAYdP6BeIjXhhZx" +
"BBuLZXmEOh9CcNoni2N4MjWVodh+DpfBeLJinsWR9AyYwVAkGBhEAFphGiRogDEGBamkFgtjcZgHiMbgehYaQhAIEIREAaQYkcQZUHIGRUGQDBOEaBAhDYDxGkMZAkCg" +
"eoagYZAYEYAYIAWGhemICIFj8WIiCiFR5gkIhogmBoKGKJx2C6C5hniMgggqYwog0UoNGMZJiDiCZRgOLY0ECUAQICA==");
EXG2ANTTLib::IChartPtr var_Chart = spG2antt1->GetChart();
	var_Chart->PutLevelCount(2);
	var_Chart->PutFirstVisibleDate(COleDateTime(2017,12,2,0,00,00).operator DATE());
	var_Chart->PutPaneWidth(VARIANT_FALSE,256);
	EXG2ANTTLib::IBarPtr var_Bar = var_Chart->GetBars()->GetItem("Summary");
		var_Bar->PutStartShape(EXG2ANTTLib::exShapeIconEmpty);
		var_Bar->PutEndShape(EXG2ANTTLib::exShapeIconEmpty);
		var_Bar->PutShape(EXG2ANTTLib::exShapeSolid);
		var_Bar->PutColor(0x1000000);
		var_Bar->PutDef(EXG2ANTTLib::exBarCaption,"<%=%513%>");
		var_Bar->PutDef(EXG2ANTTLib::exBarHAlignCaption,long(18));
	EXG2ANTTLib::IBarPtr var_Bar1 = var_Chart->GetBars()->GetItem("Task");
		var_Bar1->PutPattern(EXG2ANTTLib::exPatternBox);
		var_Bar1->PutColor(RGB(164,164,164));
		var_Bar1->PutStartColor(RGB(240,240,240));
		var_Bar1->PutEndColor(var_Bar1->GetStartColor());
		var_Bar1->PutDef(EXG2ANTTLib::exBarCaption,"<%= `<font ;6><fgcolor=0000FF><i>` + %C0 + ` ` + %C1 + ` ` + %C2 %>");
		var_Bar1->PutDef(EXG2ANTTLib::exBarHAlignCaption,long(13));
EXG2ANTTLib::IColumnsPtr var_Columns = spG2antt1->GetColumns();
	var_Columns->Add(L"C1");
	((EXG2ANTTLib::IColumnPtr)(var_Columns->Add(L"C2")))->GetEditor()->PutEditType(EXG2ANTTLib::EditType);
	((EXG2ANTTLib::IColumnPtr)(var_Columns->Add(L"C3")))->GetEditor()->PutEditType(EXG2ANTTLib::EditType);
	EXG2ANTTLib::IColumnPtr var_Column = ((EXG2ANTTLib::IColumnPtr)(var_Columns->Add(L"Pos")));
		var_Column->PutFormatColumn(L"1 pos ``");
		var_Column->PutAllowGroupBy(VARIANT_FALSE);
		var_Column->PutPosition(0);
		var_Column->PutWidth(48);
		var_Column->PutAllowSizing(VARIANT_FALSE);
spG2antt1->PutSortBarVisible(VARIANT_TRUE);
spG2antt1->PutSortBarCaption(L"Drag a <b>column</b> header here to group by that column.");
spG2antt1->PutAllowGroupBy(VARIANT_TRUE);
spG2antt1->PutHasLines(EXG2ANTTLib::exNoLine);
spG2antt1->PutLinesAtRoot(EXG2ANTTLib::exNoLinesAtRoot);
EXG2ANTTLib::IItemsPtr var_Items = spG2antt1->GetItems();
	long h = var_Items->AddItem("Item A");
	var_Items->PutCellValue(h,long(1),"SubItem A.1");
	var_Items->PutCellValue(h,long(2),"SubItem A.2");
	h = var_Items->AddItem("Item A");
	var_Items->PutCellValue(h,long(1),"SubItem A.3");
	var_Items->PutCellValue(h,long(2),"SubItem A.4");
	h = var_Items->AddItem("Item A");
	var_Items->PutCellValue(h,long(1),"SubItem A.5");
	var_Items->PutCellValue(h,long(2),"SubItem A.6");
	h = var_Items->AddItem("Item A");
	var_Items->PutCellValue(h,long(1),"SubItem A.7");
	var_Items->PutCellValue(h,long(2),"SubItem A.8");
	h = var_Items->AddItem("Item B");
	var_Items->PutCellValue(h,long(1),"SubItem B.1");
	var_Items->PutCellValue(h,long(2),"SubItem B.2");
	h = var_Items->AddItem("Item B");
	var_Items->PutCellValue(h,long(1),"SubItem B.3");
	var_Items->PutCellValue(h,long(2),"SubItem B.4");
EXG2ANTTLib::IColumnPtr var_Column1 = spG2antt1->GetColumns()->GetItem(long(0));
	var_Column1->PutSortOrder(EXG2ANTTLib::SortAscending);
spG2antt1->EndUpdate();

2089
How can I associate a box/note to a date into the control's header

/*
	Copy and paste the following directives to your header file as
	it defines the namespace 'EXG2ANTTLib' for the library: 'ExG2antt 1.0 Control Library'

	#import <ExG2antt.dll>
	using namespace EXG2ANTTLib;
*/
EXG2ANTTLib::IG2anttPtr spG2antt1 = GetDlgItem(IDC_G2ANTT1)->GetControlUnknown();
spG2antt1->BeginUpdate();
spG2antt1->PutScrollBySingleLine(VARIANT_TRUE);
spG2antt1->GetColumns()->Add(L"Task");
spG2antt1->PutHeaderHeight(17);
EXG2ANTTLib::IChartPtr var_Chart = spG2antt1->GetChart();
	var_Chart->PutFirstVisibleDate(COleDateTime(2001,1,1,0,00,00).operator DATE());
	var_Chart->PutPaneWidth(VARIANT_FALSE,96);
	var_Chart->PutLevelCount(2);
	var_Chart->PutSelBackColor(spG2antt1->GetSelBackColor());
EXG2ANTTLib::IItemsPtr var_Items = spG2antt1->GetItems();
	var_Items->AddItem("Item 1");
	var_Items->PutSelectItem(var_Items->AddItem("Item 2"),VARIANT_TRUE);
	var_Items->AddItem("Item 3");
EXG2ANTTLib::INotesPtr var_Notes = spG2antt1->GetChart()->GetNotes();
	EXG2ANTTLib::IItemsPtr var_Items1 = spG2antt1->GetItems();
		var_Items1->PutLockedItemCount(EXG2ANTTLib::exTop,1);
		long hLocked = var_Items1->GetLockedItem(EXG2ANTTLib::exTop,0);
		var_Items1->PutItemHeight(hLocked,1);
	EXG2ANTTLib::INotePtr var_Note = var_Notes->Add("header",hLocked,COleDateTime(2001,1,7,0,00,00).operator DATE(),L"Date:<br><%dd%>/<%mm%><br><b><%yyyy%></b>");
		var_Note->PutPartVisible(EXG2ANTTLib::exNoteStart,VARIANT_TRUE);
		var_Note->PutPartText(EXG2ANTTLib::exNoteStart,L"<b><%d%></b>");
		var_Note->PutPartCanMove(EXG2ANTTLib::exNoteEnd,VARIANT_TRUE);
		var_Note->PutPartCanMove(EXG2ANTTLib::exNoteStart,VARIANT_TRUE);
		var_Note->PutPartVOffset(EXG2ANTTLib::exNoteStart,-9);
		var_Note->PutPartVOffset(EXG2ANTTLib::exNoteEnd,20);
		var_Note->PutPartHOffset(EXG2ANTTLib::exNoteEnd,20);
		var_Note->PutPartBackColor(EXG2ANTTLib::exNoteStart,RGB(255,255,0));
		var_Note->PutPartFixedWidth(EXG2ANTTLib::exNoteStart,18);
spG2antt1->EndUpdate();

2088
How can I define a column of button type

// ButtonClick event - Occurs when user clicks on the cell's button.
void OnButtonClickG2antt1(long   Item,long   ColIndex,VARIANT   Key)
{
	/*
		Copy and paste the following directives to your header file as
		it defines the namespace 'EXG2ANTTLib' for the library: 'ExG2antt 1.0 Control Library'
		#import <ExG2antt.dll>
		using namespace EXG2ANTTLib;
	*/
	EXG2ANTTLib::IG2anttPtr spG2antt1 = GetDlgItem(IDC_G2ANTT1)->GetControlUnknown();
	EXG2ANTTLib::IItemsPtr var_Items = spG2antt1->GetItems();
		OutputDebugStringW( _bstr_t(var_Items->GetCellValue(Item,ColIndex)) );
}

EXG2ANTTLib::IG2anttPtr spG2antt1 = GetDlgItem(IDC_G2ANTT1)->GetControlUnknown();
spG2antt1->BeginUpdate();
EXG2ANTTLib::IColumnPtr var_Column = ((EXG2ANTTLib::IColumnPtr)(spG2antt1->GetColumns()->Add(L"Button")));
	var_Column->PutDef(EXG2ANTTLib::exCellHasButton,VARIANT_TRUE);
	var_Column->PutDef(EXG2ANTTLib::exCellButtonAutoWidth,VARIANT_FALSE);
	var_Column->PutFormatColumn(L"``");
	var_Column->PutAllowSizing(VARIANT_FALSE);
	var_Column->PutWidth(48);
((EXG2ANTTLib::IColumnPtr)(spG2antt1->GetColumns()->Add(L"Second")))->PutFormatColumn(L"` Item ` + 1 index ``");
EXG2ANTTLib::IItemsPtr var_Items = spG2antt1->GetItems();
	var_Items->AddItem("Button 1");
	var_Items->AddItem("Button 2");
	var_Items->AddItem("Button 3 ");
spG2antt1->EndUpdate();

2087
Is it possible to configure different colour/icon when there is a active filter

// FilterChange event - Occurs when the filter was changed.
void OnFilterChangeG2antt1()
{
	/*
		Copy and paste the following directives to your header file as
		it defines the namespace 'EXG2ANTTLib' for the library: 'ExG2antt 1.0 Control Library'
		#import <ExG2antt.dll>
		using namespace EXG2ANTTLib;
	*/
	EXG2ANTTLib::IG2anttPtr spG2antt1 = GetDlgItem(IDC_G2ANTT1)->GetControlUnknown();
	spG2antt1->PutBackground(EXG2ANTTLib::exHeaderFilterBarButton,spG2antt1->FormatABC(L"value = 0 ? 0x1000001 : 0x10000FF ",spG2antt1->GetColumns()->GetItem(long(0))->GetFilterType(),vtMissing,vtMissing));
}

EXG2ANTTLib::IG2anttPtr spG2antt1 = GetDlgItem(IDC_G2ANTT1)->GetControlUnknown();
spG2antt1->BeginUpdate();
EXG2ANTTLib::IAppearancePtr var_Appearance = spG2antt1->GetVisualAppearance();
	var_Appearance->PutRenderType(-16777216);
	var_Appearance->Add(1,_bstr_t("gBFLBCJwBAEHhEJAAEhABXUIQAAYAQGKIcBiAKBQAGYBIJDEMgzDDAUBjKKocQTC4AIQjCK4JDKHYJRpHEZyCA8EhqGASRAFUQBYiWE4oSpLABQaK0ZwIGyRIrkGQgQ") +
"gmPYDSDNU4zVIEEglBI0TDNczhNDENgtGYaJqHIYpZBcM40TKkEZoSIITZcRrOEBiRL1S0RBhGcRUHZlWzdN64LhuK47UrWdD/XhdVzXRbjfz1Oq+bxve48Br7A5yYTh" +
"dr4LhOFQ3RjIL4xbIcUwGe6VZhjOLZXjmO49T69HTtOCYBEBA");
spG2antt1->PutDrawGridLines(EXG2ANTTLib::exAllLines);
spG2antt1->PutShowFocusRect(VARIANT_FALSE);
spG2antt1->PutBackground(EXG2ANTTLib::exHeaderFilterBarButton,0x1000001);
spG2antt1->PutBackground(EXG2ANTTLib::exCursorHoverColumn,-1);
spG2antt1->PutHeaderAppearance(EXG2ANTTLib::Etched);
spG2antt1->PutBackColorHeader(RGB(255,255,255));
spG2antt1->PutHeaderVisible(EXG2ANTTLib::exHeaderVisibleExtendLevels);
EXG2ANTTLib::IColumnPtr var_Column = ((EXG2ANTTLib::IColumnPtr)(spG2antt1->GetColumns()->Add(L"Filter")));
	var_Column->PutDisplayFilterButton(VARIANT_TRUE);
	var_Column->PutAllowSort(VARIANT_FALSE);
	var_Column->PutAllowDragging(VARIANT_FALSE);
	var_Column->PutFilterList(EXG2ANTTLib::exShowCheckBox);
EXG2ANTTLib::IItemsPtr var_Items = spG2antt1->GetItems();
	var_Items->AddItem("Item A");
	var_Items->AddItem("Item B");
	var_Items->AddItem("Item C");
EXG2ANTTLib::IColumnPtr var_Column1 = spG2antt1->GetColumns()->GetItem(long(0));
	var_Column1->PutFilter(L"Item B");
	var_Column1->PutFilterType(EXG2ANTTLib::exFilter);
spG2antt1->ApplyFilter();
spG2antt1->EndUpdate();

2086
ADODB Requery sample

// ButtonClick event - Occurs when user clicks on the cell's button.
void OnButtonClickG2antt1(long   Item,long   ColIndex,VARIANT   Key)
{
	/*
		Copy and paste the following directives to your header file as
		it defines the namespace 'EXG2ANTTLib' for the library: 'ExG2antt 1.0 Control Library'
		#import <ExG2antt.dll>
		using namespace EXG2ANTTLib;
	*/
	EXG2ANTTLib::IG2anttPtr spG2antt1 = GetDlgItem(IDC_G2ANTT1)->GetControlUnknown();
	/*
		Includes the definition for CreateObject function like follows:
		#include <comdef.h>
		IUnknownPtr CreateObject( BSTR Object )
		{
			IUnknownPtr spResult;
			spResult.CreateInstance( Object );
			return spResult;
		};
	*/
	/*
		Copy and paste the following directives to your header file as
		it defines the namespace 'ADODB' for the library: 'Microsoft ActiveX Data Objects 6.1 Library'
		#import <msado15.dll> rename("EOF","REOF")
	*/
	ADODB::_CommandPtr cmd = ::CreateObject(L"ADODB.Command");
		cmd->PutActiveConnection(((ADODB::_ConnectionPtr)(((ADODB::_RecordsetPtr)(spG2antt1->GetDataSource()))->GetActiveConnection())));
		cmd->PutCommandText(L"INSERT INTO Orders (EmployeeID) VALUES(12345)");
		cmd->PutCommandType(ADODB::adCmdText);
		cmd->Execute(vtMissing,vtMissing,0);
	((ADODB::_RecordsetPtr)(spG2antt1->GetDataSource()))->Requery(0);
}

// Error event - Fired when an internal error occurs.
void OnErrorG2antt1(long   Error,LPCTSTR   Description)
{
	EXG2ANTTLib::IG2anttPtr spG2antt1 = GetDlgItem(IDC_G2ANTT1)->GetControlUnknown();
	OutputDebugStringW( L"Description" );
}

EXG2ANTTLib::IG2anttPtr spG2antt1 = GetDlgItem(IDC_G2ANTT1)->GetControlUnknown();
spG2antt1->BeginUpdate();
spG2antt1->PutHeaderAppearance(EXG2ANTTLib::Etched);
spG2antt1->PutColumnAutoResize(VARIANT_FALSE);
ADODB::_RecordsetPtr rs = ::CreateObject(L"ADODB.Recordset");
	rs->Open("Select * From Orders","Provider=Microsoft.ACE.OLEDB.12.0;Data Source=C:\\Program Files\\Exontrol\\ExG2antt\\Sample\\Access\\misc.accdb",ADODB::adOpenKeyset,ADODB::adLockOptimistic,0);
spG2antt1->PutDataSource(((ADODB::_RecordsetPtr)(rs)));
spG2antt1->GetConditionalFormats()->Add(L"%1=12345",vtMissing)->PutBackColor(RGB(240,240,240));
EXG2ANTTLib::IItemsPtr var_Items = spG2antt1->GetItems();
	var_Items->PutLockedItemCount(EXG2ANTTLib::exTop,1);
	long h = var_Items->GetLockedItem(EXG2ANTTLib::exTop,0);
	var_Items->PutItemDivider(h,0);
	var_Items->PutCellHasButton(h,long(0),VARIANT_TRUE);
	var_Items->PutCellValue(h,long(0),"Requery (add a new record, using ADODB.Command)");
	var_Items->PutCellHAlignment(h,long(0),EXG2ANTTLib::CenterAlignment);
spG2antt1->EndUpdate();

2085
I am skinning the control's header-bar, but the background of the header-bar is shown on each item in the filter-bar drop down panel. What can I do

/*
	Copy and paste the following directives to your header file as
	it defines the namespace 'EXG2ANTTLib' for the library: 'ExG2antt 1.0 Control Library'

	#import <ExG2antt.dll>
	using namespace EXG2ANTTLib;
*/
EXG2ANTTLib::IG2anttPtr spG2antt1 = GetDlgItem(IDC_G2ANTT1)->GetControlUnknown();
spG2antt1->BeginUpdate();
EXG2ANTTLib::IAppearancePtr var_Appearance = spG2antt1->GetVisualAppearance();
	var_Appearance->Add(1,_bstr_t("gBFLBCJwBAEHhEJAAEhABFgDg6AADACAxRDgMQBQKAAzQFAYcBqGqGAAGQZxYgmFgAQhFcZQSKUOQTDKMIziYBYfgkMIgSbJUgDGAkRRdDSOYDmGQYDiCIoRShOMIjH") +
"LUXxtDaIZwhEAoJb+RgAUY/cTzaAEUwHHiTKInaCQGhsCYJUJAdRURQ9EwvCIZBpEWwLChENQwWLCNj2TScBwjCyqbale45ViqdoDU8lORLUi+M4zSBPcZVTRtGShPDB" +
"KTjMKKYgkG4lVpRNa0PC1GTzQ6mazkKQLRADDIDVbAeL3LiMBy9LyLLItQALByua5mWhbcZyBCOPgBTrRb5zO58FjuTK7YLjMB7NrUNYtFaUMy2OpOCADIaecTNcaWLx" +
"PF2MY1HWYxVj2Jw3DuRJonKYBgggSRAlIYw6B0ThGFgPAkFUDAhBMfZRiGNAkFECZnm4YQdneJwqnsSQrGAAhWAIJBJBIQgFCQIBiEIAglgqYo0i4V4MEgRI9gSToYFS" +
"b4Fk6Y4+BmBZhFOJgTC8TBogQAArgqco4muCZOkOMJtgmYpIjYKg7GKE4uCUK4AAKKg2DwI4DiCZw5k6KJ2D6D4OHiag4DwIxiiQAArAqMosnEPBPAOIhOg+DozjIJ4P" +
"GSY4iEwPAkhKLhHUUSQsnKFCnkYU9MjORhcCsAAIACLQ8iaSJ6FKC5jJoaobA8KYoACCRKnmMJzhuDpZnSboMCKGJ4nMPIPDmYAACwKIDk6CoLCeU40m6I5oliMoKDya" +
"ICokLIpgoThviOKJoGYf4KmUKhMjMLJLCAAojCyaYoiYGoGmqM46CkOwPEoKonAACxKlSdItmiWBeBeDgrioNo3D0KxSlAAAtgsUpYnUPRPEoco8hCa+T40SxbBRj5tE" +
"sHJ1i6JhbGYS4ug8awelQLZAAKZI5C4DxrhYQ9ehmUppWiA48nAPRuFKYpiAAC47laZQ9iuKZSgOPotkuFI7C6C4gACPJAm8eQOhOQZoikDp3kCS5AACPoEk8fBGnqQg" +
"pDOSppD2TxjlyPZD6CfwekQTx5lKP5ImseZTCAL5MAMAAAkoTADmMLpIjISp+HSS4PgyMAADBzAHDSIoPCOUpWjObIKE8NJOHKIwPEaTprBsHpdjWLB9AieQ+DQYwQAA" +
"MR1EOZxWi+bx7HcWQ8msfRYnnDhQACRwxgwc5rGaMZPE0ZxqjWNZtgyRwAAyTZEnuXJzEyAx2kQcxNkye5cEy3cYAcANrGAIH4OAhx3gNGGPAfgIR8jBA4McBMARViHH" +
"4HQOYmxuCpF2MsecEQVBvGQCcIQvA6i2CAAIARAQ=");
	var_Appearance->Add(2,_bstr_t("gBFLBCJwBAEHhEJAAEhABZEGACAADACAxRDgMQBQKAAzQFAYcBqGqGAAGQZxYgmFgAQhFcZQSKUOQTDKMIziYBYJhEMwwDhEIwjHCEEhsGIbJAGQBJCjWGodQLOEgzN") +
"C0IxNFCQILhEZJADKII8TTOU5UPRESwTE4cKBmKhQCo2NpKR7VUTxCKQahLLivoCjBT8EzHMqtIzrCA6MpaP4pQjKcqwHJ8YyHEi0ZrjazKaj6T5AXDUcaWbbNVx3PK3" +
"aioOpLZrqOZZYzYFoABTuJzPMSyIhxXD8cweaZvSpLExVYK9BY3PbKMgxC77QgTIpDaQMNS6PjtF43PAALLFUaNYzoOKzABMHATBIXAYJCwIIR5G7ID4BbQcCQAHL9DB" +
"aEEIAEEISgGhMGZQmocgymmIRQkIEQ2BcGgbEIRQci8XaMBqTRVgSAZHG+S5pnOep+D6f4vjec5zn0fpfmgBgAH6TRoBYBoAh+eAmAiAgPFgNArgOQpIESdoEmCOAOAq" +
"BYfFGAgaEaBgYHYFYFmIB5UiGCJUgKCgmgeYoHk4BgCmKRQiCwApgHgYgyH8B54lQU4NkMeJlBoDgjkiXBTg0R54iYIR+koeQVBoKpkgkChKhEJBkF4SFEjkDgJhFQoe" +
"EmDJlBeehUhWJQJGIXoICWOQ6FeFIlhkfhlDsSJpiQVoamaSY2G6G5nAmRhpCOH5pkwVYdmeCZmHqHpnkmdhzhmaAIFiax8AABAEICA==");
spG2antt1->PutBackColorHeader(0x1000000);
spG2antt1->PutForeColorHeader(RGB(128,128,128));
spG2antt1->PutBackground(EXG2ANTTLib::exHeaderFilterBarButton,0x2000000);
spG2antt1->PutBackground(EXG2ANTTLib::exBackColorFilter,RGB(255,255,255));
spG2antt1->PutBackground(EXG2ANTTLib::exForeColorFilter,RGB(0,0,1));
spG2antt1->PutBackground(EXG2ANTTLib::exSelBackColorFilter,0x1ff8000);
spG2antt1->PutBackground(EXG2ANTTLib::exSelForeColorFilter,RGB(240,240,240));
spG2antt1->PutBackground(EXG2ANTTLib::exCursorHoverColumn,-1);
spG2antt1->PutHeaderHeight(24);
spG2antt1->PutBackColorLevelHeader(spG2antt1->GetBackColor());
EXG2ANTTLib::IColumnPtr var_Column = ((EXG2ANTTLib::IColumnPtr)(spG2antt1->GetColumns()->Add(L"Filter")));
	var_Column->PutDisplayFilterButton(VARIANT_TRUE);
	var_Column->PutDisplayFilterPattern(VARIANT_FALSE);
	var_Column->PutFilterList(EXG2ANTTLib::FilterListEnum(EXG2ANTTLib::exShowExclude | EXG2ANTTLib::exShowFocusItem | EXG2ANTTLib::exShowCheckBox | EXG2ANTTLib::exSortItemsAsc));
	var_Column->PutDef(EXG2ANTTLib::exHeaderPaddingLeft,long(2));
	var_Column->PutDef(EXG2ANTTLib::exHeaderPaddingRight,long(2));
EXG2ANTTLib::IItemsPtr var_Items = spG2antt1->GetItems();
	var_Items->AddItem("A");
	var_Items->AddItem("B");
	var_Items->AddItem("C");
	var_Items->AddItem("D");
spG2antt1->EndUpdate();

2084
I specify the ItemHeight for each row, but as soon as I click the chart section, the item's height is restored to default (not working). What could be the cause

/*
	Copy and paste the following directives to your header file as
	it defines the namespace 'EXG2ANTTLib' for the library: 'ExG2antt 1.0 Control Library'

	#import <ExG2antt.dll>
	using namespace EXG2ANTTLib;
*/
EXG2ANTTLib::IG2anttPtr spG2antt1 = GetDlgItem(IDC_G2ANTT1)->GetControlUnknown();
spG2antt1->BeginUpdate();
spG2antt1->PutScrollBySingleLine(VARIANT_TRUE);
spG2antt1->GetColumns()->Add(L"Types");
spG2antt1->PutDrawGridLines(EXG2ANTTLib::exHLines);
EXG2ANTTLib::IChartPtr var_Chart = spG2antt1->GetChart();
	var_Chart->PutLevelCount(2);
	var_Chart->PutDrawGridLines(EXG2ANTTLib::exHLines);
	var_Chart->PutAllowCreateBar(EXG2ANTTLib::exCreateBarAuto);
	var_Chart->PutAllowLinkBars(VARIANT_FALSE);
	var_Chart->PutResizeUnitScale(EXG2ANTTLib::exHour);
	var_Chart->PutPaneWidth(VARIANT_FALSE,112);
	var_Chart->PutFirstVisibleDate(COleDateTime(2001,1,1,0,00,00).operator DATE());
	EXG2ANTTLib::IBarPtr var_Bar = var_Chart->GetBars()->GetItem("Task");
		var_Bar->PutOverlaidType(EXG2ANTTLib::exOverlaidBarsStack);
		var_Bar->PutDef(EXG2ANTTLib::exBarCaption,"<%=%9%>");
		var_Bar->PutDef(EXG2ANTTLib::exBarHAlignCaption,long(18));
EXG2ANTTLib::IItemsPtr var_Items = spG2antt1->GetItems();
	long h = var_Items->AddItem("ItemMinHeight");
	var_Items->AddBar(h,"Task",COleDateTime(2001,1,7,0,00,00).operator DATE(),COleDateTime(2001,1,10,0,00,00).operator DATE(),"A1",vtMissing);
	var_Items->AddBar(h,"Task",COleDateTime(2001,1,8,0,00,00).operator DATE(),COleDateTime(2001,1,12,0,00,00).operator DATE(),"A2",vtMissing);
	var_Items->PutItemMinHeight(h,64);
	var_Items->AddBar(var_Items->AddItem("Default (One)"),"Task",COleDateTime(2001,1,7,0,00,00).operator DATE(),COleDateTime(2001,1,10,0,00,00).operator DATE(),"A3",vtMissing);
	h = var_Items->AddItem("Default (Two)");
	var_Items->AddBar(h,"Task",COleDateTime(2001,1,7,0,00,00).operator DATE(),COleDateTime(2001,1,10,0,00,00).operator DATE(),"A4",vtMissing);
	var_Items->AddBar(h,"Task",COleDateTime(2001,1,8,0,00,00).operator DATE(),COleDateTime(2001,1,12,0,00,00).operator DATE(),"A5",vtMissing);
	h = var_Items->AddItem("ItemFixedHeight");
	var_Items->AddBar(h,"Task",COleDateTime(2001,1,7,0,00,00).operator DATE(),COleDateTime(2001,1,10,0,00,00).operator DATE(),"A6",vtMissing);
	var_Items->AddBar(h,"Task",COleDateTime(2001,1,8,0,00,00).operator DATE(),COleDateTime(2001,1,12,0,00,00).operator DATE(),"A7",vtMissing);
	var_Items->PutItemMinHeight(h,20);
	var_Items->PutItemMaxHeight(h,20);
	h = var_Items->AddItem("ItemMaxHeight");
	var_Items->AddBar(h,"Task",COleDateTime(2001,1,7,0,00,00).operator DATE(),COleDateTime(2001,1,10,0,00,00).operator DATE(),"A8",vtMissing);
	var_Items->AddBar(h,"Task",COleDateTime(2001,1,8,0,00,00).operator DATE(),COleDateTime(2001,1,12,0,00,00).operator DATE(),"A9",vtMissing);
	var_Items->PutItemMaxHeight(h,24);
spG2antt1->EndUpdate();

2083
The ItemHeight property is not working (method 2)

/*
	Copy and paste the following directives to your header file as
	it defines the namespace 'EXG2ANTTLib' for the library: 'ExG2antt 1.0 Control Library'

	#import <ExG2antt.dll>
	using namespace EXG2ANTTLib;
*/
EXG2ANTTLib::IG2anttPtr spG2antt1 = GetDlgItem(IDC_G2ANTT1)->GetControlUnknown();
spG2antt1->BeginUpdate();
spG2antt1->PutColumnAutoResize(VARIANT_FALSE);
spG2antt1->PutScrollBySingleLine(VARIANT_TRUE);
((EXG2ANTTLib::IColumnPtr)(spG2antt1->GetColumns()->Add(L"Column")))->PutWidth(128);
EXG2ANTTLib::IItemsPtr var_Items = spG2antt1->GetItems();
	var_Items->PutCellSingleLine(var_Items->AddItem("This is a bit of text that should break the line"),long(0),EXG2ANTTLib::exCaptionWordWrap);
	long h = var_Items->AddItem("");
	var_Items->PutItemDivider(h,0);
	var_Items->PutSelectableItem(h,VARIANT_FALSE);
	var_Items->PutItemDividerLineAlignment(h,EXG2ANTTLib::DividerCenter);
	var_Items->PutItemHeight(h,3);
	var_Items->PutCellSingleLine(var_Items->AddItem("This is a bit of text that should break the line"),long(0),EXG2ANTTLib::exCaptionWordWrap);
spG2antt1->EndUpdate();

2082
The ItemHeight property is not working (method 1)

/*
	Copy and paste the following directives to your header file as
	it defines the namespace 'EXG2ANTTLib' for the library: 'ExG2antt 1.0 Control Library'

	#import <ExG2antt.dll>
	using namespace EXG2ANTTLib;
*/
EXG2ANTTLib::IG2anttPtr spG2antt1 = GetDlgItem(IDC_G2ANTT1)->GetControlUnknown();
spG2antt1->BeginUpdate();
spG2antt1->PutColumnAutoResize(VARIANT_FALSE);
spG2antt1->PutScrollBySingleLine(VARIANT_TRUE);
EXG2ANTTLib::IColumnPtr var_Column = ((EXG2ANTTLib::IColumnPtr)(spG2antt1->GetColumns()->Add(L"Column")));
	var_Column->PutWidth(128);
	var_Column->PutDef(EXG2ANTTLib::exCellSingleLine,long(0));
EXG2ANTTLib::IItemsPtr var_Items = spG2antt1->GetItems();
	var_Items->AddItem("This is a bit of text that should break the line");
	long h = var_Items->AddItem("");
	var_Items->PutItemDivider(h,0);
	var_Items->PutSelectableItem(h,VARIANT_FALSE);
	var_Items->PutItemDividerLineAlignment(h,EXG2ANTTLib::DividerCenter);
	var_Items->PutItemMinHeight(h,3);
	var_Items->PutItemMaxHeight(h,3);
	var_Items->AddItem("This is a bit of text that should break the line");
spG2antt1->EndUpdate();

2081
How do I use the ColumnsFloatBarVisible on exColumnsFloatBarVisibleIncludeCheckColumns

/*
	Copy and paste the following directives to your header file as
	it defines the namespace 'EXG2ANTTLib' for the library: 'ExG2antt 1.0 Control Library'

	#import <ExG2antt.dll>
	using namespace EXG2ANTTLib;
*/
EXG2ANTTLib::IG2anttPtr spG2antt1 = GetDlgItem(IDC_G2ANTT1)->GetControlUnknown();
spG2antt1->BeginUpdate();
spG2antt1->PutColumnAutoResize(VARIANT_FALSE);
spG2antt1->PutHeaderAppearance(EXG2ANTTLib::Etched);
EXG2ANTTLib::IColumnsPtr var_Columns = spG2antt1->GetColumns();
	var_Columns->Add(L"City");
	((EXG2ANTTLib::IColumnPtr)(var_Columns->Add(L"Start")))->PutVisible(VARIANT_FALSE);
	((EXG2ANTTLib::IColumnPtr)(var_Columns->Add(L"End")))->PutVisible(VARIANT_FALSE);
spG2antt1->PutDescription(EXG2ANTTLib::exColumnsFloatBar,L"Show/Hide");
spG2antt1->PutColumnsFloatBarSortOrder(EXG2ANTTLib::SortAscending);
spG2antt1->PutColumnsFloatBarVisible(EXG2ANTTLib::exColumnsFloatBarVisibleIncludeCheckColumns);
spG2antt1->EndUpdate();

2080
How do I use the ColumnsFloatBarVisible on exColumnsFloatBarVisibleIncludeHiddenColumn

/*
	Copy and paste the following directives to your header file as
	it defines the namespace 'EXG2ANTTLib' for the library: 'ExG2antt 1.0 Control Library'

	#import <ExG2antt.dll>
	using namespace EXG2ANTTLib;
*/
EXG2ANTTLib::IG2anttPtr spG2antt1 = GetDlgItem(IDC_G2ANTT1)->GetControlUnknown();
spG2antt1->BeginUpdate();
spG2antt1->PutColumnAutoResize(VARIANT_FALSE);
spG2antt1->PutHeaderAppearance(EXG2ANTTLib::Etched);
EXG2ANTTLib::IColumnsPtr var_Columns = spG2antt1->GetColumns();
	var_Columns->Add(L"City");
	((EXG2ANTTLib::IColumnPtr)(var_Columns->Add(L"Start")))->PutVisible(VARIANT_FALSE);
	((EXG2ANTTLib::IColumnPtr)(var_Columns->Add(L"End")))->PutVisible(VARIANT_FALSE);
spG2antt1->PutDescription(EXG2ANTTLib::exColumnsFloatBar,L"Show");
spG2antt1->PutColumnsFloatBarVisible(EXG2ANTTLib::exColumnsFloatBarVisibleIncludeHiddenColumns);
spG2antt1->PutColumnsFloatBarSortOrder(EXG2ANTTLib::SortAscending);
spG2antt1->EndUpdate();

2079
How do I use the ColumnsFloatBarVisible on exColumnsFloatBarVisibleIncludeGroupByColumns

/*
	Copy and paste the following directives to your header file as
	it defines the namespace 'EXG2ANTTLib' for the library: 'ExG2antt 1.0 Control Library'

	#import <ExG2antt.dll>
	using namespace EXG2ANTTLib;
*/
EXG2ANTTLib::IG2anttPtr spG2antt1 = GetDlgItem(IDC_G2ANTT1)->GetControlUnknown();
spG2antt1->BeginUpdate();
spG2antt1->PutColumnAutoResize(VARIANT_FALSE);
spG2antt1->PutHeaderAppearance(EXG2ANTTLib::Etched);
EXG2ANTTLib::IColumnsPtr var_Columns = spG2antt1->GetColumns();
	var_Columns->Add(L"City");
	var_Columns->Add(L"Start");
	var_Columns->Add(L"End");
spG2antt1->PutAllowGroupBy(VARIANT_TRUE);
spG2antt1->PutSortBarVisible(VARIANT_TRUE);
spG2antt1->PutSortBarCaption(L"Drag a <b>column</b> header here to group by that column.");
spG2antt1->PutBackColorSortBar(RGB(250,250,250));
spG2antt1->PutDescription(EXG2ANTTLib::exColumnsFloatBar,L"Group-By");
spG2antt1->PutColumnsFloatBarVisible(EXG2ANTTLib::exColumnsFloatBarVisibleIncludeGroupByColumns);
spG2antt1->PutColumnsFloatBarSortOrder(EXG2ANTTLib::SortAscending);
spG2antt1->GetColumns()->GetItem("City")->PutSortOrder(EXG2ANTTLib::SortAscending);
spG2antt1->EndUpdate();

2078
How can I advance to the next line, once the user presses the ENTER key

// KeyDown event - Occurs when the user presses a key while an object has the focus.
void OnKeyDownG2antt1(short FAR*   KeyCode,short   Shift)
{
	/*
		Copy and paste the following directives to your header file as
		it defines the namespace 'EXG2ANTTLib' for the library: 'ExG2antt 1.0 Control Library'
		#import <ExG2antt.dll>
		using namespace EXG2ANTTLib;
	*/
	EXG2ANTTLib::IG2anttPtr spG2antt1 = GetDlgItem(IDC_G2ANTT1)->GetControlUnknown();
	OutputDebugStringW( L"KeyCode Before:" );
	OutputDebugStringW( L"KeyCode" );
	KeyCode = spG2antt1->FormatABC(L"value = 13 ? 40 : value",KeyCode,vtMissing,vtMissing);
	OutputDebugStringW( L"KeyCode After:" );
	OutputDebugStringW( L"KeyCode" );
}

EXG2ANTTLib::IG2anttPtr spG2antt1 = GetDlgItem(IDC_G2ANTT1)->GetControlUnknown();
spG2antt1->BeginUpdate();
EXG2ANTTLib::IColumnsPtr var_Columns = spG2antt1->GetColumns();
	EXG2ANTTLib::IEditorPtr var_Editor = ((EXG2ANTTLib::IColumnPtr)(var_Columns->Add(L"A")))->GetEditor();
		var_Editor->PutAppearance(EXG2ANTTLib::EtchedApp);
		var_Editor->PutEditType(EXG2ANTTLib::EditType);
	EXG2ANTTLib::IEditorPtr var_Editor1 = ((EXG2ANTTLib::IColumnPtr)(var_Columns->Add(L"B")))->GetEditor();
		var_Editor1->PutAppearance(EXG2ANTTLib::EtchedApp);
		var_Editor1->PutEditType(EXG2ANTTLib::EditType);
EXG2ANTTLib::IItemsPtr var_Items = spG2antt1->GetItems();
	long h0 = var_Items->AddItem("Item A.1");
	var_Items->PutCellValue(h0,long(1),"Item B.1");
	h0 = var_Items->AddItem("Item A.2");
	var_Items->PutCellValue(h0,long(1),"Item B.2");
spG2antt1->EndUpdate();

2077
I am using AddNew to add new records, but I can not see them into the control

// AddItem event - Occurs after a new Item has been inserted to Items collection.
void OnAddItemG2antt1(long   Item)
{
	/*
		Copy and paste the following directives to your header file as
		it defines the namespace 'EXG2ANTTLib' for the library: 'ExG2antt 1.0 Control Library'
		#import <ExG2antt.dll>
		using namespace EXG2ANTTLib;
	*/
	EXG2ANTTLib::IG2anttPtr spG2antt1 = GetDlgItem(IDC_G2ANTT1)->GetControlUnknown();
	EXG2ANTTLib::IItemsPtr var_Items = spG2antt1->GetItems();
		var_Items->AddBar(Item,"Task",var_Items->GetCellValue(Item,long(1)),var_Items->GetCellValue(Item,long(2)),vtMissing,vtMissing);
}

// ButtonClick event - Occurs when user clicks on the cell's button.
void OnButtonClickG2antt1(long   Item,long   ColIndex,VARIANT   Key)
{
	EXG2ANTTLib::IG2anttPtr spG2antt1 = GetDlgItem(IDC_G2ANTT1)->GetControlUnknown();
	/*
		Copy and paste the following directives to your header file as
		it defines the namespace 'ADODB' for the library: 'Microsoft ActiveX Data Objects 6.1 Library'
		#import <msado15.dll> rename("EOF","REOF")
	*/
	ADODB::_RecordsetPtr var_Recordset = ((ADODB::_RecordsetPtr)(spG2antt1->GetDataSource()));
		var_Recordset->AddNew(vtMissing,vtMissing);
		var_Recordset->GetFields()->GetItem("Name")->PutValue("Task New");
		var_Recordset->Update(vtMissing,vtMissing);
}

EXG2ANTTLib::IG2anttPtr spG2antt1 = GetDlgItem(IDC_G2ANTT1)->GetControlUnknown();
spG2antt1->BeginUpdate();
spG2antt1->PutHeaderAppearance(EXG2ANTTLib::Etched);
/*
	Includes the definition for CreateObject function like follows:

	#include <comdef.h>
	IUnknownPtr CreateObject( BSTR Object )
	{
		IUnknownPtr spResult;
		spResult.CreateInstance( Object );
		return spResult;
	};

*/
ADODB::_RecordsetPtr rs = ::CreateObject(L"ADODB.Recordset");
	ADODB::FieldsPtr var_Fields = rs->GetFields();
		var_Fields->Append(L"Name",ADODB::adBSTR,0,vtMissing,vtMissing);
		var_Fields->Append(L"Start",ADODB::adDate,0,vtMissing,vtMissing);
		var_Fields->Append(L"End",ADODB::adDate,0,vtMissing,vtMissing);
	rs->Open(vtMissing,vtMissing,vtMissing,vtMissing,0);
	rs->AddNew(vtMissing,vtMissing);
	rs->GetFields()->GetItem("Name")->PutValue("Task A");
	rs->GetFields()->GetItem("Start")->PutValue(COleDateTime(2001,1,4,0,00,00).operator DATE());
	rs->GetFields()->GetItem("End")->PutValue(COleDateTime(2001,1,10,0,00,00).operator DATE());
	rs->Update(vtMissing,vtMissing);
	rs->AddNew(vtMissing,vtMissing);
	rs->GetFields()->GetItem("Name")->PutValue("Task B");
	rs->GetFields()->GetItem("Start")->PutValue(COleDateTime(2001,1,5,0,00,00).operator DATE());
	rs->GetFields()->GetItem("End")->PutValue(COleDateTime(2001,1,11,0,00,00).operator DATE());
	rs->Update(vtMissing,vtMissing);
spG2antt1->PutDataSource(((ADODB::_RecordsetPtr)(rs)));
EXG2ANTTLib::IChartPtr var_Chart = spG2antt1->GetChart();
	var_Chart->PutFirstVisibleDate(COleDateTime(2001,1,1,0,00,00).operator DATE());
	var_Chart->PutLevelCount(2);
	var_Chart->PutPaneWidth(VARIANT_FALSE,256);
spG2antt1->GetItems()->PutAllowCellValueToItemBar(VARIANT_TRUE);
spG2antt1->GetColumns()->GetItem("Start")->PutDef(EXG2ANTTLib::exCellValueToItemBarProperty,long(1));
spG2antt1->GetColumns()->GetItem("End")->PutDef(EXG2ANTTLib::exCellValueToItemBarProperty,long(2));
EXG2ANTTLib::IItemsPtr var_Items = spG2antt1->GetItems();
	var_Items->PutLockedItemCount(EXG2ANTTLib::exTop,1);
	long h = var_Items->GetLockedItem(EXG2ANTTLib::exTop,0);
	var_Items->PutItemDivider(h,0);
	var_Items->PutCellHasButton(h,long(0),VARIANT_TRUE);
	var_Items->PutCellValue(h,long(0),"AddNew");
	var_Items->PutCellHAlignment(h,long(0),EXG2ANTTLib::CenterAlignment);
spG2antt1->PutDetectAddNew(VARIANT_TRUE);
spG2antt1->PutDetectDelete(VARIANT_TRUE);
spG2antt1->EndUpdate();

2076
How can I create a new ADO recordset

// AddItem event - Occurs after a new Item has been inserted to Items collection.
void OnAddItemG2antt1(long   Item)
{
	/*
		Copy and paste the following directives to your header file as
		it defines the namespace 'EXG2ANTTLib' for the library: 'ExG2antt 1.0 Control Library'
		#import <ExG2antt.dll>
		using namespace EXG2ANTTLib;
	*/
	EXG2ANTTLib::IG2anttPtr spG2antt1 = GetDlgItem(IDC_G2ANTT1)->GetControlUnknown();
	EXG2ANTTLib::IItemsPtr var_Items = spG2antt1->GetItems();
		var_Items->AddBar(Item,"Task",var_Items->GetCellValue(Item,long(1)),var_Items->GetCellValue(Item,long(2)),vtMissing,vtMissing);
}

EXG2ANTTLib::IG2anttPtr spG2antt1 = GetDlgItem(IDC_G2ANTT1)->GetControlUnknown();
spG2antt1->BeginUpdate();
/*
	Includes the definition for CreateObject function like follows:

	#include <comdef.h>
	IUnknownPtr CreateObject( BSTR Object )
	{
		IUnknownPtr spResult;
		spResult.CreateInstance( Object );
		return spResult;
	};

*/
/*
	Copy and paste the following directives to your header file as
	it defines the namespace 'ADODB' for the library: 'Microsoft ActiveX Data Objects 6.1 Library'

	#import <msado15.dll> rename("EOF","REOF")
*/
ADODB::_RecordsetPtr rs = ::CreateObject(L"ADODB.Recordset");
	ADODB::FieldsPtr var_Fields = rs->GetFields();
		var_Fields->Append(L"Name",ADODB::adBSTR,0,vtMissing,vtMissing);
		var_Fields->Append(L"Start",ADODB::adDate,0,vtMissing,vtMissing);
		var_Fields->Append(L"End",ADODB::adDate,0,vtMissing,vtMissing);
	rs->Open(vtMissing,vtMissing,vtMissing,vtMissing,0);
	rs->AddNew(vtMissing,vtMissing);
	rs->PutFields(ADODB::adOpenForwardOnly);
	rs->PutFields(ADODB::adOpenForwardOnly);
	rs->PutFields(ADODB::adOpenForwardOnly);
	rs->Update(vtMissing,vtMissing);
	rs->AddNew(vtMissing,vtMissing);
	rs->PutFields(ADODB::adOpenForwardOnly);
	rs->PutFields(ADODB::adOpenForwardOnly);
	rs->PutFields(ADODB::adOpenForwardOnly);
	rs->Update(vtMissing,vtMissing);
spG2antt1->PutDataSource(((ADODB::_RecordsetPtr)(rs)));
EXG2ANTTLib::IChartPtr var_Chart = spG2antt1->GetChart();
	var_Chart->PutFirstVisibleDate(COleDateTime(2001,1,1,0,00,00).operator DATE());
	var_Chart->PutLevelCount(2);
	var_Chart->PutPaneWidth(VARIANT_FALSE,256);
spG2antt1->GetItems()->PutAllowCellValueToItemBar(VARIANT_TRUE);
spG2antt1->GetColumns()->GetItem("Start")->PutDef(EXG2ANTTLib::exCellValueToItemBarProperty,long(1));
spG2antt1->GetColumns()->GetItem("End")->PutDef(EXG2ANTTLib::exCellValueToItemBarProperty,long(2));
spG2antt1->EndUpdate();

2075
Do do I get the DAO version I have installed

/*
	Copy and paste the following directives to your header file as
	it defines the namespace 'EXG2ANTTLib' for the library: 'ExG2antt 1.0 Control Library'

	#import <ExG2antt.dll>
	using namespace EXG2ANTTLib;
*/
EXG2ANTTLib::IG2anttPtr spG2antt1 = GetDlgItem(IDC_G2ANTT1)->GetControlUnknown();
/*
	Includes the definition for CreateObject function like follows:

	#include <comdef.h>
	IUnknownPtr CreateObject( BSTR Object )
	{
		IUnknownPtr spResult;
		spResult.CreateInstance( Object );
		return spResult;
	};

*/
OutputDebugStringW( ::CreateObject(L"DAO.DBEngine.35")->GetVersion()->GetVersion() );
OutputDebugStringW( ::CreateObject(L"DAO.DBEngine.36")->GetVersion()->GetVersion() );
OutputDebugStringW( ::CreateObject(L"DAO.DBEngine.120")->GetVersion()->GetVersion() );

2074
How do I get a list of interfaces the object implemenets

// AddItem event - Occurs after a new Item has been inserted to Items collection.
void OnAddItemG2antt1(long   Item)
{
	/*
		Copy and paste the following directives to your header file as
		it defines the namespace 'EXG2ANTTLib' for the library: 'ExG2antt 1.0 Control Library'
		#import <ExG2antt.dll>
		using namespace EXG2ANTTLib;
	*/
	EXG2ANTTLib::IG2anttPtr spG2antt1 = GetDlgItem(IDC_G2ANTT1)->GetControlUnknown();
	EXG2ANTTLib::IItemsPtr var_Items = spG2antt1->GetItems();
		var_Items->AddBar(Item,"Task",var_Items->GetCellValue(Item,long(2)),var_Items->GetCellValue(Item,long(4)),vtMissing,vtMissing);
}

EXG2ANTTLib::IG2anttPtr spG2antt1 = GetDlgItem(IDC_G2ANTT1)->GetControlUnknown();
spG2antt1->BeginUpdate();
spG2antt1->PutColumnAutoResize(VARIANT_FALSE);
/*
	Includes the definition for CreateObject function like follows:

	#include <comdef.h>
	IUnknownPtr CreateObject( BSTR Object )
	{
		IUnknownPtr spResult;
		spResult.CreateInstance( Object );
		return spResult;
	};

*/
/*
	Copy and paste the following directives to your header file as
	it defines the namespace 'DAO' for the library: 'Microsoft Office 15.0 Access database engine Object Library'

	#import <ACEDAO.DLL>
*/
DAO::_DBEnginePtr var_PrivDBEngine = ::CreateObject(L"DAO.DBEngine.120");
	DAO::Recordset2Ptr rs = ((DAO::Recordset2Ptr)(var_PrivDBEngine->OpenDatabase(L"C:\\Program Files\\Exontrol\\ExG2antt\\Sample\\Access\\misc.accdb",vtMissing,vtMissing,vtMissing)->OpenRecordset(L"Orders",vtMissing,vtMissing,vtMissing)));
OutputDebugStringW( _bstr_t(::CreateObject(L"Exontrol.PropertiesList")) );
spG2antt1->PutDataSource(((DAO::Recordset2Ptr)(rs)));
EXG2ANTTLib::IChartPtr var_Chart = spG2antt1->GetChart();
	var_Chart->PutFirstVisibleDate(COleDateTime(1994,8,4,0,00,00).operator DATE());
	var_Chart->PutLevelCount(2);
	var_Chart->PutPaneWidth(VARIANT_FALSE,256);
spG2antt1->GetItems()->PutAllowCellValueToItemBar(VARIANT_TRUE);
spG2antt1->GetColumns()->GetItem(long(2))->PutDef(EXG2ANTTLib::exCellValueToItemBarProperty,long(1));
spG2antt1->GetColumns()->GetItem(long(4))->PutDef(EXG2ANTTLib::exCellValueToItemBarProperty,long(2));
spG2antt1->EndUpdate();

2073
Do do I get the ADO version I have installed

/*
	Copy and paste the following directives to your header file as
	it defines the namespace 'EXG2ANTTLib' for the library: 'ExG2antt 1.0 Control Library'

	#import <ExG2antt.dll>
	using namespace EXG2ANTTLib;
*/
EXG2ANTTLib::IG2anttPtr spG2antt1 = GetDlgItem(IDC_G2ANTT1)->GetControlUnknown();
/*
	Includes the definition for CreateObject function like follows:

	#include <comdef.h>
	IUnknownPtr CreateObject( BSTR Object )
	{
		IUnknownPtr spResult;
		spResult.CreateInstance( Object );
		return spResult;
	};

*/
OutputDebugStringW( L"ADO Version:" );
OutputDebugStringW( ::CreateObject(L"ADODB.Connection")->GetVersion()->GetVersion() );

2072
DAO, ACCDB, 120

// AddItem event - Occurs after a new Item has been inserted to Items collection.
void OnAddItemG2antt1(long   Item)
{
	/*
		Copy and paste the following directives to your header file as
		it defines the namespace 'EXG2ANTTLib' for the library: 'ExG2antt 1.0 Control Library'
		#import <ExG2antt.dll>
		using namespace EXG2ANTTLib;
	*/
	EXG2ANTTLib::IG2anttPtr spG2antt1 = GetDlgItem(IDC_G2ANTT1)->GetControlUnknown();
	EXG2ANTTLib::IItemsPtr var_Items = spG2antt1->GetItems();
		var_Items->AddBar(Item,"Task",var_Items->GetCellValue(Item,long(2)),var_Items->GetCellValue(Item,long(4)),vtMissing,vtMissing);
}

EXG2ANTTLib::IG2anttPtr spG2antt1 = GetDlgItem(IDC_G2ANTT1)->GetControlUnknown();
spG2antt1->BeginUpdate();
spG2antt1->PutColumnAutoResize(VARIANT_FALSE);
/*
	Includes the definition for CreateObject function like follows:

	#include <comdef.h>
	IUnknownPtr CreateObject( BSTR Object )
	{
		IUnknownPtr spResult;
		spResult.CreateInstance( Object );
		return spResult;
	};

*/
/*
	Copy and paste the following directives to your header file as
	it defines the namespace 'DAO' for the library: 'Microsoft Office 15.0 Access database engine Object Library'

	#import <ACEDAO.DLL>
*/
DAO::_DBEnginePtr var_PrivDBEngine = ::CreateObject(L"DAO.DBEngine.120");
	DAO::Recordset2Ptr rs = ((DAO::Recordset2Ptr)(var_PrivDBEngine->OpenDatabase(L"C:\\Program Files\\Exontrol\\ExG2antt\\Sample\\Access\\misc.accdb",vtMissing,vtMissing,vtMissing)->OpenRecordset(L"Orders",vtMissing,vtMissing,vtMissing)));
spG2antt1->PutDataSource(((DAO::Recordset2Ptr)(rs)));
EXG2ANTTLib::IChartPtr var_Chart = spG2antt1->GetChart();
	var_Chart->PutFirstVisibleDate(COleDateTime(1994,8,4,0,00,00).operator DATE());
	var_Chart->PutLevelCount(2);
	var_Chart->PutPaneWidth(VARIANT_FALSE,256);
spG2antt1->GetItems()->PutAllowCellValueToItemBar(VARIANT_TRUE);
spG2antt1->GetColumns()->GetItem(long(2))->PutDef(EXG2ANTTLib::exCellValueToItemBarProperty,long(1));
spG2antt1->GetColumns()->GetItem(long(4))->PutDef(EXG2ANTTLib::exCellValueToItemBarProperty,long(2));
spG2antt1->EndUpdate();

2071
DAO, MDB, 120

// AddItem event - Occurs after a new Item has been inserted to Items collection.
void OnAddItemG2antt1(long   Item)
{
	/*
		Copy and paste the following directives to your header file as
		it defines the namespace 'EXG2ANTTLib' for the library: 'ExG2antt 1.0 Control Library'
		#import <ExG2antt.dll>
		using namespace EXG2ANTTLib;
	*/
	EXG2ANTTLib::IG2anttPtr spG2antt1 = GetDlgItem(IDC_G2ANTT1)->GetControlUnknown();
	EXG2ANTTLib::IItemsPtr var_Items = spG2antt1->GetItems();
		var_Items->AddBar(Item,"Task",var_Items->GetCellValue(Item,long(2)),var_Items->GetCellValue(Item,long(4)),vtMissing,vtMissing);
}

EXG2ANTTLib::IG2anttPtr spG2antt1 = GetDlgItem(IDC_G2ANTT1)->GetControlUnknown();
spG2antt1->BeginUpdate();
spG2antt1->PutColumnAutoResize(VARIANT_FALSE);
/*
	Includes the definition for CreateObject function like follows:

	#include <comdef.h>
	IUnknownPtr CreateObject( BSTR Object )
	{
		IUnknownPtr spResult;
		spResult.CreateInstance( Object );
		return spResult;
	};

*/
/*
	Copy and paste the following directives to your header file as
	it defines the namespace 'DAO' for the library: 'Microsoft Office 15.0 Access database engine Object Library'

	#import <ACEDAO.DLL>
*/
DAO::_DBEnginePtr var_PrivDBEngine = ::CreateObject(L"DAO.DBEngine.120");
	DAO::Recordset2Ptr rs = ((DAO::Recordset2Ptr)(var_PrivDBEngine->OpenDatabase(L"C:\\Program Files\\Exontrol\\ExG2antt\\sample\\Access\\misc.mdb",vtMissing,vtMissing,vtMissing)->OpenRecordset(L"Orders",vtMissing,vtMissing,vtMissing)));
spG2antt1->PutDataSource(((DAO::Recordset2Ptr)(rs)));
EXG2ANTTLib::IChartPtr var_Chart = spG2antt1->GetChart();
	var_Chart->PutFirstVisibleDate(COleDateTime(1994,8,4,0,00,00).operator DATE());
	var_Chart->PutLevelCount(2);
	var_Chart->PutPaneWidth(VARIANT_FALSE,256);
spG2antt1->GetItems()->PutAllowCellValueToItemBar(VARIANT_TRUE);
spG2antt1->GetColumns()->GetItem(long(2))->PutDef(EXG2ANTTLib::exCellValueToItemBarProperty,long(1));
spG2antt1->GetColumns()->GetItem(long(4))->PutDef(EXG2ANTTLib::exCellValueToItemBarProperty,long(2));
spG2antt1->EndUpdate();

2070
DAO, MDB

// AddItem event - Occurs after a new Item has been inserted to Items collection.
void OnAddItemG2antt1(long   Item)
{
	/*
		Copy and paste the following directives to your header file as
		it defines the namespace 'EXG2ANTTLib' for the library: 'ExG2antt 1.0 Control Library'
		#import <ExG2antt.dll>
		using namespace EXG2ANTTLib;
	*/
	EXG2ANTTLib::IG2anttPtr spG2antt1 = GetDlgItem(IDC_G2ANTT1)->GetControlUnknown();
	EXG2ANTTLib::IItemsPtr var_Items = spG2antt1->GetItems();
		var_Items->AddBar(Item,"Task",var_Items->GetCellValue(Item,long(2)),var_Items->GetCellValue(Item,long(4)),vtMissing,vtMissing);
}

EXG2ANTTLib::IG2anttPtr spG2antt1 = GetDlgItem(IDC_G2ANTT1)->GetControlUnknown();
spG2antt1->BeginUpdate();
spG2antt1->PutColumnAutoResize(VARIANT_FALSE);
/*
	Includes the definition for CreateObject function like follows:

	#include <comdef.h>
	IUnknownPtr CreateObject( BSTR Object )
	{
		IUnknownPtr spResult;
		spResult.CreateInstance( Object );
		return spResult;
	};

*/
/*
	Copy and paste the following directives to your header file as
	it defines the namespace 'DAO' for the library: 'Microsoft DAO 3.6 Object Library'

	#import <dao360.dll>
*/
DAO::_DBEnginePtr var_PrivDBEngine = ::CreateObject(L"DAO.DBEngine.36");
	DAO::RecordsetPtr rs = var_PrivDBEngine->OpenDatabase(L"C:\\Program Files\\Exontrol\\ExG2antt\\sample\\Access\\misc.mdb",vtMissing,vtMissing,vtMissing)->OpenRecordset(L"Orders",vtMissing,vtMissing,vtMissing);
spG2antt1->PutDataSource(((DAO::RecordsetPtr)(rs)));
EXG2ANTTLib::IChartPtr var_Chart = spG2antt1->GetChart();
	var_Chart->PutFirstVisibleDate(COleDateTime(1994,8,4,0,00,00).operator DATE());
	var_Chart->PutLevelCount(2);
	var_Chart->PutPaneWidth(VARIANT_FALSE,256);
spG2antt1->GetItems()->PutAllowCellValueToItemBar(VARIANT_TRUE);
spG2antt1->GetColumns()->GetItem(long(2))->PutDef(EXG2ANTTLib::exCellValueToItemBarProperty,long(1));
spG2antt1->GetColumns()->GetItem(long(4))->PutDef(EXG2ANTTLib::exCellValueToItemBarProperty,long(2));
spG2antt1->EndUpdate();

2069
ADODB, ACCDB, x64

// AddItem event - Occurs after a new Item has been inserted to Items collection.
void OnAddItemG2antt1(long   Item)
{
	/*
		Copy and paste the following directives to your header file as
		it defines the namespace 'EXG2ANTTLib' for the library: 'ExG2antt 1.0 Control Library'
		#import <ExG2antt.dll>
		using namespace EXG2ANTTLib;
	*/
	EXG2ANTTLib::IG2anttPtr spG2antt1 = GetDlgItem(IDC_G2ANTT1)->GetControlUnknown();
	EXG2ANTTLib::IItemsPtr var_Items = spG2antt1->GetItems();
		var_Items->AddBar(Item,"Task",var_Items->GetCellValue(Item,long(2)),var_Items->GetCellValue(Item,long(4)),vtMissing,vtMissing);
}

EXG2ANTTLib::IG2anttPtr spG2antt1 = GetDlgItem(IDC_G2ANTT1)->GetControlUnknown();
spG2antt1->BeginUpdate();
spG2antt1->PutColumnAutoResize(VARIANT_FALSE);
/*
	Includes the definition for CreateObject function like follows:

	#include <comdef.h>
	IUnknownPtr CreateObject( BSTR Object )
	{
		IUnknownPtr spResult;
		spResult.CreateInstance( Object );
		return spResult;
	};

*/
/*
	Copy and paste the following directives to your header file as
	it defines the namespace 'ADODB' for the library: 'Microsoft ActiveX Data Objects 6.1 Library'

	#import <msado15.dll> rename("EOF","REOF")
*/
ADODB::_RecordsetPtr rs = ::CreateObject(L"ADODB.Recordset");
	rs->Open("Orders","Provider=Microsoft.ACE.OLEDB.12.0;Data Source=C:\\Program Files\\Exontrol\\ExG2antt\\Sample\\Access\\misc.accdb",ADODB::adOpenKeyset,ADODB::adLockReadOnly,0);
spG2antt1->PutDataSource(((ADODB::_RecordsetPtr)(rs)));
EXG2ANTTLib::IChartPtr var_Chart = spG2antt1->GetChart();
	var_Chart->PutFirstVisibleDate(COleDateTime(1994,8,4,0,00,00).operator DATE());
	var_Chart->PutLevelCount(2);
	var_Chart->PutPaneWidth(VARIANT_FALSE,256);
spG2antt1->GetItems()->PutAllowCellValueToItemBar(VARIANT_TRUE);
spG2antt1->GetColumns()->GetItem(long(2))->PutDef(EXG2ANTTLib::exCellValueToItemBarProperty,long(1));
spG2antt1->GetColumns()->GetItem(long(4))->PutDef(EXG2ANTTLib::exCellValueToItemBarProperty,long(2));
spG2antt1->EndUpdate();

2068
ADOR, ACCDB

// AddItem event - Occurs after a new Item has been inserted to Items collection.
void OnAddItemG2antt1(long   Item)
{
	/*
		Copy and paste the following directives to your header file as
		it defines the namespace 'EXG2ANTTLib' for the library: 'ExG2antt 1.0 Control Library'
		#import <ExG2antt.dll>
		using namespace EXG2ANTTLib;
	*/
	EXG2ANTTLib::IG2anttPtr spG2antt1 = GetDlgItem(IDC_G2ANTT1)->GetControlUnknown();
	EXG2ANTTLib::IItemsPtr var_Items = spG2antt1->GetItems();
		var_Items->AddBar(Item,"Task",var_Items->GetCellValue(Item,long(2)),var_Items->GetCellValue(Item,long(4)),vtMissing,vtMissing);
}

EXG2ANTTLib::IG2anttPtr spG2antt1 = GetDlgItem(IDC_G2ANTT1)->GetControlUnknown();
spG2antt1->BeginUpdate();
spG2antt1->PutColumnAutoResize(VARIANT_FALSE);
/*
	Includes the definition for CreateObject function like follows:

	#include <comdef.h>
	IUnknownPtr CreateObject( BSTR Object )
	{
		IUnknownPtr spResult;
		spResult.CreateInstance( Object );
		return spResult;
	};

*/
/*
	Copy and paste the following directives to your header file as
	it defines the namespace 'ADODB' for the library: 'Microsoft ActiveX Data Objects 6.1 Library'

	#import <msado15.dll> rename("EOF","REOF")
*/
ADODB::_RecordsetPtr rs = ::CreateObject(L"ADOR.Recordset");
	rs->Open("Orders","Provider=Microsoft.ACE.OLEDB.12.0;Data Source=C:\\Program Files\\Exontrol\\ExG2antt\\Sample\\Access\\misc.accdb",ADODB::adOpenStatic,ADODB::adLockOptimistic,0);
spG2antt1->PutDataSource(((ADODB::_RecordsetPtr)(rs)));
EXG2ANTTLib::IChartPtr var_Chart = spG2antt1->GetChart();
	var_Chart->PutFirstVisibleDate(COleDateTime(1994,8,4,0,00,00).operator DATE());
	var_Chart->PutLevelCount(2);
	var_Chart->PutPaneWidth(VARIANT_FALSE,256);
spG2antt1->GetItems()->PutAllowCellValueToItemBar(VARIANT_TRUE);
spG2antt1->GetColumns()->GetItem(long(2))->PutDef(EXG2ANTTLib::exCellValueToItemBarProperty,long(1));
spG2antt1->GetColumns()->GetItem(long(4))->PutDef(EXG2ANTTLib::exCellValueToItemBarProperty,long(2));
spG2antt1->EndUpdate();

2067
ADODB, MDB

// AddItem event - Occurs after a new Item has been inserted to Items collection.
void OnAddItemG2antt1(long   Item)
{
	/*
		Copy and paste the following directives to your header file as
		it defines the namespace 'EXG2ANTTLib' for the library: 'ExG2antt 1.0 Control Library'
		#import <ExG2antt.dll>
		using namespace EXG2ANTTLib;
	*/
	EXG2ANTTLib::IG2anttPtr spG2antt1 = GetDlgItem(IDC_G2ANTT1)->GetControlUnknown();
	EXG2ANTTLib::IItemsPtr var_Items = spG2antt1->GetItems();
		var_Items->AddBar(Item,"Task",var_Items->GetCellValue(Item,long(2)),var_Items->GetCellValue(Item,long(4)),vtMissing,vtMissing);
}

EXG2ANTTLib::IG2anttPtr spG2antt1 = GetDlgItem(IDC_G2ANTT1)->GetControlUnknown();
spG2antt1->BeginUpdate();
spG2antt1->PutColumnAutoResize(VARIANT_FALSE);
/*
	Includes the definition for CreateObject function like follows:

	#include <comdef.h>
	IUnknownPtr CreateObject( BSTR Object )
	{
		IUnknownPtr spResult;
		spResult.CreateInstance( Object );
		return spResult;
	};

*/
/*
	Copy and paste the following directives to your header file as
	it defines the namespace 'ADODB' for the library: 'Microsoft ActiveX Data Objects 6.1 Library'

	#import <msado15.dll> rename("EOF","REOF")
*/
ADODB::_RecordsetPtr rs = ::CreateObject(L"ADODB.Recordset");
	rs->Open("Orders","Provider=Microsoft.ACE.OLEDB.12.0;Data Source=C:\\Program Files\\Exontrol\\ExG2antt\\Sample\\Access\\misc.accdb",ADODB::adOpenStatic,ADODB::adLockOptimistic,0);
spG2antt1->PutDataSource(((ADODB::_RecordsetPtr)(rs)));
EXG2ANTTLib::IChartPtr var_Chart = spG2antt1->GetChart();
	var_Chart->PutFirstVisibleDate(COleDateTime(1994,8,4,0,00,00).operator DATE());
	var_Chart->PutLevelCount(2);
	var_Chart->PutPaneWidth(VARIANT_FALSE,256);
spG2antt1->GetItems()->PutAllowCellValueToItemBar(VARIANT_TRUE);
spG2antt1->GetColumns()->GetItem(long(2))->PutDef(EXG2ANTTLib::exCellValueToItemBarProperty,long(1));
spG2antt1->GetColumns()->GetItem(long(4))->PutDef(EXG2ANTTLib::exCellValueToItemBarProperty,long(2));
spG2antt1->EndUpdate();

2066
ADOR, MDB

// AddItem event - Occurs after a new Item has been inserted to Items collection.
void OnAddItemG2antt1(long   Item)
{
	/*
		Copy and paste the following directives to your header file as
		it defines the namespace 'EXG2ANTTLib' for the library: 'ExG2antt 1.0 Control Library'
		#import <ExG2antt.dll>
		using namespace EXG2ANTTLib;
	*/
	EXG2ANTTLib::IG2anttPtr spG2antt1 = GetDlgItem(IDC_G2ANTT1)->GetControlUnknown();
	EXG2ANTTLib::IItemsPtr var_Items = spG2antt1->GetItems();
		var_Items->AddBar(Item,"Task",var_Items->GetCellValue(Item,long(2)),var_Items->GetCellValue(Item,long(4)),vtMissing,vtMissing);
}

EXG2ANTTLib::IG2anttPtr spG2antt1 = GetDlgItem(IDC_G2ANTT1)->GetControlUnknown();
spG2antt1->BeginUpdate();
spG2antt1->PutColumnAutoResize(VARIANT_FALSE);
/*
	Includes the definition for CreateObject function like follows:

	#include <comdef.h>
	IUnknownPtr CreateObject( BSTR Object )
	{
		IUnknownPtr spResult;
		spResult.CreateInstance( Object );
		return spResult;
	};

*/
/*
	Copy and paste the following directives to your header file as
	it defines the namespace 'ADODB' for the library: 'Microsoft ActiveX Data Objects 6.1 Library'

	#import <msado15.dll> rename("EOF","REOF")
*/
ADODB::_RecordsetPtr rs = ::CreateObject(L"ADOR.Recordset");
	rs->Open("Orders","Provider=Microsoft.ACE.OLEDB.12.0;Data Source=C:\\Program Files\\Exontrol\\ExG2antt\\Sample\\Access\\misc.accdb",ADODB::adOpenStatic,ADODB::adLockOptimistic,0);
spG2antt1->PutDataSource(((ADODB::_RecordsetPtr)(rs)));
EXG2ANTTLib::IChartPtr var_Chart = spG2antt1->GetChart();
	var_Chart->PutFirstVisibleDate(COleDateTime(1994,8,4,0,00,00).operator DATE());
	var_Chart->PutLevelCount(2);
	var_Chart->PutPaneWidth(VARIANT_FALSE,256);
spG2antt1->GetItems()->PutAllowCellValueToItemBar(VARIANT_TRUE);
spG2antt1->GetColumns()->GetItem(long(2))->PutDef(EXG2ANTTLib::exCellValueToItemBarProperty,long(1));
spG2antt1->GetColumns()->GetItem(long(4))->PutDef(EXG2ANTTLib::exCellValueToItemBarProperty,long(2));
spG2antt1->EndUpdate();

2065
I am using exCellValueToItemBarProperty, Is it possible to “disable” this synchronisation for one (or several) item (sample-2)

/*
	Copy and paste the following directives to your header file as
	it defines the namespace 'EXG2ANTTLib' for the library: 'ExG2antt 1.0 Control Library'

	#import <ExG2antt.dll>
	using namespace EXG2ANTTLib;
*/
EXG2ANTTLib::IG2anttPtr spG2antt1 = GetDlgItem(IDC_G2ANTT1)->GetControlUnknown();
spG2antt1->BeginUpdate();
EXG2ANTTLib::IColumnsPtr var_Columns = spG2antt1->GetColumns();
	var_Columns->Add(L"Tasks");
	((EXG2ANTTLib::IColumnPtr)(var_Columns->Add(L"Start")))->PutDef(EXG2ANTTLib::exCellValueToItemBarProperty,long(1));
	((EXG2ANTTLib::IColumnPtr)(var_Columns->Add(L"End")))->PutDef(EXG2ANTTLib::exCellValueToItemBarProperty,long(2));
EXG2ANTTLib::IChartPtr var_Chart = spG2antt1->GetChart();
	var_Chart->PutFirstVisibleDate(COleDateTime(2006,9,20,0,00,00).operator DATE());
	var_Chart->PutLevelCount(2);
	var_Chart->PutPaneWidth(VARIANT_FALSE,196);
	var_Chart->PutAllowCreateBar(EXG2ANTTLib::exCreateBarAuto);
EXG2ANTTLib::IItemsPtr var_Items = spG2antt1->GetItems();
	var_Items->PutAllowCellValueToItemBar(VARIANT_TRUE);
	var_Items->AddBar(var_Items->AddItem("Task 1"),"Task",COleDateTime(2006,9,21,0,00,00).operator DATE(),COleDateTime(2006,9,24,0,00,00).operator DATE(),vtMissing,vtMissing);
	long h = var_Items->AddItem("Task 2");
	var_Items->AddBar(h,"Task",COleDateTime(2006,9,22,0,00,00).operator DATE(),COleDateTime(2006,9,25,0,00,00).operator DATE(),vtMissing,vtMissing);
	var_Items->PutItemBold(h,VARIANT_TRUE);
	var_Items->CellValueToItemBar(h,long(1),EXG2ANTTLib::exBarStart,"newbar");
	var_Items->CellValueToItemBar(h,long(2),EXG2ANTTLib::exBarEnd,"newbar");
	var_Items->AddBar(var_Items->AddItem("Task 3"),"Task",COleDateTime(2006,9,23,0,00,00).operator DATE(),COleDateTime(2006,9,26,0,00,00).operator DATE(),vtMissing,vtMissing);
spG2antt1->EndUpdate();

2064
I am using exCellValueToItemBarProperty, Is it possible to “disable” this synchronisation for one (or several) item (sample-1)

/*
	Copy and paste the following directives to your header file as
	it defines the namespace 'EXG2ANTTLib' for the library: 'ExG2antt 1.0 Control Library'

	#import <ExG2antt.dll>
	using namespace EXG2ANTTLib;
*/
EXG2ANTTLib::IG2anttPtr spG2antt1 = GetDlgItem(IDC_G2ANTT1)->GetControlUnknown();
spG2antt1->BeginUpdate();
EXG2ANTTLib::IColumnsPtr var_Columns = spG2antt1->GetColumns();
	var_Columns->Add(L"Tasks");
	((EXG2ANTTLib::IColumnPtr)(var_Columns->Add(L"Start")))->PutDef(EXG2ANTTLib::exCellValueToItemBarProperty,long(1));
	((EXG2ANTTLib::IColumnPtr)(var_Columns->Add(L"End")))->PutDef(EXG2ANTTLib::exCellValueToItemBarProperty,long(2));
EXG2ANTTLib::IChartPtr var_Chart = spG2antt1->GetChart();
	var_Chart->PutFirstVisibleDate(COleDateTime(2006,9,20,0,00,00).operator DATE());
	var_Chart->PutLevelCount(2);
	var_Chart->PutPaneWidth(VARIANT_FALSE,196);
EXG2ANTTLib::IItemsPtr var_Items = spG2antt1->GetItems();
	var_Items->PutAllowCellValueToItemBar(VARIANT_TRUE);
	var_Items->AddBar(var_Items->AddItem("Task 1"),"Task",COleDateTime(2006,9,21,0,00,00).operator DATE(),COleDateTime(2006,9,24,0,00,00).operator DATE(),vtMissing,vtMissing);
	long h = var_Items->AddItem("Task 2");
	var_Items->AddBar(h,"Task",COleDateTime(2006,9,22,0,00,00).operator DATE(),COleDateTime(2006,9,25,0,00,00).operator DATE(),vtMissing,vtMissing);
	var_Items->PutFormatCell(h,long(1),L"``");
	var_Items->PutFormatCell(h,long(2),L"``");
	var_Items->PutItemBold(h,VARIANT_TRUE);
	var_Items->AddBar(var_Items->AddItem("Task 3"),"Task",COleDateTime(2006,9,23,0,00,00).operator DATE(),COleDateTime(2006,9,26,0,00,00).operator DATE(),vtMissing,vtMissing);
spG2antt1->EndUpdate();

2063
How can I use the CRD (eXCRD format)

/*
	Copy and paste the following directives to your header file as
	it defines the namespace 'EXG2ANTTLib' for the library: 'ExG2antt 1.0 Control Library'

	#import <ExG2antt.dll>
	using namespace EXG2ANTTLib;
*/
EXG2ANTTLib::IG2anttPtr spG2antt1 = GetDlgItem(IDC_G2ANTT1)->GetControlUnknown();
spG2antt1->BeginUpdate();
spG2antt1->PutHeaderAppearance(EXG2ANTTLib::Etched);
spG2antt1->PutSelBackMode(EXG2ANTTLib::exTransparent);
EXG2ANTTLib::IColumnPtr var_Column = ((EXG2ANTTLib::IColumnPtr)(spG2antt1->GetColumns()->Add(L"Default")));
	var_Column->PutDef(EXG2ANTTLib::exCellFormatLevel,_bstr_t("[b=0]60;1[b=15]:60,((20;\"<fgcolor=808080>Dateigröße\"[b=1][a=2]:120,2[b=15])/(20;\"<fgcolor=808080>Erstellt am\"[a=2]:120,3[b=") +
"15])/(20;\"<fgcolor=808080>Zuletzt bearbeitet\"[b=4][a=2]:120,4[b=15]))");
	var_Column->PutAllowSort(VARIANT_FALSE);
((EXG2ANTTLib::IColumnPtr)(spG2antt1->GetColumns()->Add(L"1")))->PutVisible(VARIANT_FALSE);
EXG2ANTTLib::IColumnPtr var_Column1 = ((EXG2ANTTLib::IColumnPtr)(spG2antt1->GetColumns()->Add(L"2")));
	var_Column1->PutVisible(VARIANT_FALSE);
	var_Column1->GetEditor()->PutEditType(EXG2ANTTLib::EditType);
	var_Column1->PutFormatColumn(L"1 index `A-Z`");
EXG2ANTTLib::IColumnPtr var_Column2 = ((EXG2ANTTLib::IColumnPtr)(spG2antt1->GetColumns()->Add(L"3")));
	var_Column2->PutVisible(VARIANT_FALSE);
	var_Column2->GetEditor()->PutEditType(EXG2ANTTLib::EditType);
	var_Column2->PutFormatColumn(L"1 index ``");
EXG2ANTTLib::IColumnPtr var_Column3 = ((EXG2ANTTLib::IColumnPtr)(spG2antt1->GetColumns()->Add(L"4")));
	var_Column3->PutVisible(VARIANT_FALSE);
	var_Column3->GetEditor()->PutEditType(EXG2ANTTLib::EditType);
	var_Column3->PutFormatColumn(L"date(``)");
_bstr_t dih = 48;
spG2antt1->PutDefaultItemHeight(dih);
spG2antt1->PutDrawGridLines(EXG2ANTTLib::exRowLines);
spG2antt1->PutGridLineStyle(EXG2ANTTLib::exGridLinesSolid);
EXG2ANTTLib::IChartPtr var_Chart = spG2antt1->GetChart();
	var_Chart->PutDrawGridLines(EXG2ANTTLib::exRowLines);
	var_Chart->PutGridLineStyle(EXG2ANTTLib::exGridLinesSolid);
	var_Chart->PutPaneWidth(VARIANT_FALSE,256);
	var_Chart->PutLevelCount(2);
	var_Chart->PutFirstVisibleDate(COleDateTime(2001,1,1,0,00,00).operator DATE());
	var_Chart->GetBars()->GetItem("Task")->PutOverlaidType(EXG2ANTTLib::OverlaidBarsTypeEnum(EXG2ANTTLib::exOverlaidBarsStackAutoArrange | EXG2ANTTLib::exOverlaidBarsStack));
EXG2ANTTLib::IItemsPtr var_Items = spG2antt1->GetItems();
	long h = var_Items->AddItem("");
	var_Items->PutCellValue(h,long(1),"One");
	var_Items->AddBar(h,"Task",COleDateTime(2001,1,2,0,00,00).operator DATE(),COleDateTime(2001,1,12,0,00,00).operator DATE(),"A",vtMissing);
	var_Items->AddBar(h,"Task",COleDateTime(2001,1,4,0,00,00).operator DATE(),COleDateTime(2001,1,14,0,00,00).operator DATE(),"B",vtMissing);
	var_Items->PutItemMaxHeight(h,dih);
	h = var_Items->AddItem("");
	var_Items->PutCellValue(h,long(1),"Two");
	var_Items->AddBar(h,"Task",COleDateTime(2001,1,5,0,00,00).operator DATE(),COleDateTime(2001,1,10,0,00,00).operator DATE(),"A",vtMissing);
	var_Items->AddBar(h,"Task",COleDateTime(2001,1,2,0,00,00).operator DATE(),COleDateTime(2001,1,4,0,00,00).operator DATE(),"B",vtMissing);
	var_Items->AddBar(h,"Task",COleDateTime(2001,1,5,0,00,00).operator DATE(),COleDateTime(2001,1,14,0,00,00).operator DATE(),"B2",vtMissing);
	var_Items->PutItemMaxHeight(h,dih);
	h = var_Items->AddItem("");
	var_Items->PutCellValue(h,long(1),"Three");
	var_Items->AddBar(h,"Task",COleDateTime(2001,1,5,0,00,00).operator DATE(),COleDateTime(2001,1,10,0,00,00).operator DATE(),"A",vtMissing);
spG2antt1->EndUpdate();

2062
Type of wraps the cell's caption support (Sample 2)

/*
	Copy and paste the following directives to your header file as
	it defines the namespace 'EXG2ANTTLib' for the library: 'ExG2antt 1.0 Control Library'

	#import <ExG2antt.dll>
	using namespace EXG2ANTTLib;
*/
EXG2ANTTLib::IG2anttPtr spG2antt1 = GetDlgItem(IDC_G2ANTT1)->GetControlUnknown();
spG2antt1->BeginUpdate();
spG2antt1->PutHeaderSingleLine(VARIANT_FALSE);
spG2antt1->PutHeaderHeight(36);
spG2antt1->PutDrawGridLines(EXG2ANTTLib::exRowLines);
spG2antt1->PutColumnAutoResize(VARIANT_FALSE);
spG2antt1->PutScrollBySingleLine(VARIANT_TRUE);
EXG2ANTTLib::IColumnsPtr var_Columns = spG2antt1->GetColumns();
	EXG2ANTTLib::IColumnPtr var_Column = ((EXG2ANTTLib::IColumnPtr)(var_Columns->Add(L"Single-Line (exCaptionSingleLine)")));
		var_Column->PutWidth(96);
		var_Column->PutDef(EXG2ANTTLib::exCellValueFormat,long(1));
		var_Column->PutDef(EXG2ANTTLib::exCellSingleLine,long(-1));
	EXG2ANTTLib::IColumnPtr var_Column1 = ((EXG2ANTTLib::IColumnPtr)(var_Columns->Add(L"Word-Wrap (exCaptionWordWrap)")));
		var_Column1->PutWidth(96);
		var_Column1->PutDef(EXG2ANTTLib::exCellValueFormat,long(1));
		var_Column1->PutDef(EXG2ANTTLib::exCellSingleLine,long(0));
		var_Column1->PutFormatColumn(L"%0");
	EXG2ANTTLib::IColumnPtr var_Column2 = ((EXG2ANTTLib::IColumnPtr)(var_Columns->Add(L"Break-Wrap (exCaptionBreakWrap)")));
		var_Column2->PutWidth(96);
		var_Column2->PutDef(EXG2ANTTLib::exCellValueFormat,long(1));
		var_Column2->PutDef(EXG2ANTTLib::exCellSingleLine,long(1));
		var_Column2->PutFormatColumn(L"%0");
EXG2ANTTLib::IItemsPtr var_Items = spG2antt1->GetItems();
	var_Items->AddItem("This is the <b>first</b> line.<br>This is the <b>second</b> line.<br>This is the <b>third</b> line.");
	var_Items->AddItem("This is the <b>first</b> line.\\r\\nThis is the <b>second</b> line.\\r\\nThis is the <b>third</b> line.");
spG2antt1->EndUpdate();

2061
Type of wraps the cell's caption support (Sample 1)

/*
	Copy and paste the following directives to your header file as
	it defines the namespace 'EXG2ANTTLib' for the library: 'ExG2antt 1.0 Control Library'

	#import <ExG2antt.dll>
	using namespace EXG2ANTTLib;
*/
EXG2ANTTLib::IG2anttPtr spG2antt1 = GetDlgItem(IDC_G2ANTT1)->GetControlUnknown();
spG2antt1->BeginUpdate();
spG2antt1->PutHeaderSingleLine(VARIANT_FALSE);
spG2antt1->PutHeaderHeight(36);
spG2antt1->PutDrawGridLines(EXG2ANTTLib::exRowLines);
spG2antt1->PutColumnAutoResize(VARIANT_FALSE);
spG2antt1->PutScrollBySingleLine(VARIANT_TRUE);
((EXG2ANTTLib::IColumnPtr)(spG2antt1->GetColumns()->Add(L"Default")))->PutWidth(128);
EXG2ANTTLib::IItemsPtr var_Items = spG2antt1->GetItems();
	long h = var_Items->AddItem("This is the first line.\\r\\nThis is the second line.\\r\\nThis is the third line.");
	h = var_Items->AddItem("This is the <b>first</b> line.<br>This is the <b>second</b> line.<br>This is the <b>third</b> line.");
	var_Items->PutCellValueFormat(h,long(0),EXG2ANTTLib::exHTML);
	h = var_Items->AddItem("This is the first line.\\r\\nThis is the second line.\\r\\nThis is the third line.");
	var_Items->PutCellSingleLine(h,long(0),EXG2ANTTLib::exCaptionWordWrap);
	h = var_Items->AddItem("This is the <b>first</b> line.<br>This is the <b>second</b> line.<br>This is the <b>third</b> line.");
	var_Items->PutCellValueFormat(h,long(0),EXG2ANTTLib::exHTML);
	var_Items->PutCellSingleLine(h,long(0),EXG2ANTTLib::exCaptionWordWrap);
	h = var_Items->AddItem("This is the first line.\\r\\nThis is the second line.\\r\\nThis is the third line.");
	var_Items->PutCellSingleLine(h,long(0),EXG2ANTTLib::exCaptionBreakWrap);
	h = var_Items->AddItem("This is the <b>first</b> line.<br>This is the <b>second</b> line.<br>This is the <b>third</b> line.");
	var_Items->PutCellValueFormat(h,long(0),EXG2ANTTLib::exHTML);
	var_Items->PutCellSingleLine(h,long(0),EXG2ANTTLib::exCaptionBreakWrap);
spG2antt1->EndUpdate();

2060
Can I break the cell's caption using the line break <br> or \r\n (Sample 2)

/*
	Copy and paste the following directives to your header file as
	it defines the namespace 'EXG2ANTTLib' for the library: 'ExG2antt 1.0 Control Library'

	#import <ExG2antt.dll>
	using namespace EXG2ANTTLib;
*/
EXG2ANTTLib::IG2anttPtr spG2antt1 = GetDlgItem(IDC_G2ANTT1)->GetControlUnknown();
spG2antt1->BeginUpdate();
spG2antt1->PutDrawGridLines(EXG2ANTTLib::exRowLines);
spG2antt1->PutColumnAutoResize(VARIANT_FALSE);
spG2antt1->PutScrollBySingleLine(VARIANT_TRUE);
((EXG2ANTTLib::IColumnPtr)(spG2antt1->GetColumns()->Add(L"Default")))->PutWidth(128);
EXG2ANTTLib::IItemsPtr var_Items = spG2antt1->GetItems();
	var_Items->PutCellSingleLine(var_Items->AddItem("This is the first line.\\r\\nThis is the second line.\\r\\nThis is the third line."),long(0),EXG2ANTTLib::exCaptionBreakWrap);
	var_Items->AddItem("This is the first line.\\r\\nThis is the second line.\\r\\nThis is the third line.");
spG2antt1->EndUpdate();

2059
Can I break the cell's caption using the line break <br> or \r\n (Sample 1)

/*
	Copy and paste the following directives to your header file as
	it defines the namespace 'EXG2ANTTLib' for the library: 'ExG2antt 1.0 Control Library'

	#import <ExG2antt.dll>
	using namespace EXG2ANTTLib;
*/
EXG2ANTTLib::IG2anttPtr spG2antt1 = GetDlgItem(IDC_G2ANTT1)->GetControlUnknown();
spG2antt1->BeginUpdate();
spG2antt1->PutDrawGridLines(EXG2ANTTLib::exRowLines);
spG2antt1->PutColumnAutoResize(VARIANT_FALSE);
spG2antt1->PutScrollBySingleLine(VARIANT_TRUE);
EXG2ANTTLib::IColumnPtr var_Column = ((EXG2ANTTLib::IColumnPtr)(spG2antt1->GetColumns()->Add(L"Default")));
	var_Column->PutWidth(128);
	var_Column->PutDef(EXG2ANTTLib::exCellSingleLine,long(1));
EXG2ANTTLib::IItemsPtr var_Items = spG2antt1->GetItems();
	var_Items->AddItem("This is the first line.\\r\\nThis is the second line.\\r\\nThis is the third line.");
	var_Items->AddItem("This is the first line.\\r\\nThis is the second line.\\r\\nThis is the third line.");
spG2antt1->EndUpdate();

2058
The histogram is showing empty space, when expanding an item. What could be wrong

/*
	Copy and paste the following directives to your header file as
	it defines the namespace 'EXG2ANTTLib' for the library: 'ExG2antt 1.0 Control Library'

	#import <ExG2antt.dll>
	using namespace EXG2ANTTLib;
*/
EXG2ANTTLib::IG2anttPtr spG2antt1 = GetDlgItem(IDC_G2ANTT1)->GetControlUnknown();
spG2antt1->BeginUpdate();
spG2antt1->PutLinesAtRoot(EXG2ANTTLib::exGroupLinesOutside);
EXG2ANTTLib::IChartPtr var_Chart = spG2antt1->GetChart();
	var_Chart->PutLevelCount(2);
	var_Chart->PutPaneWidth(VARIANT_FALSE,128);
	var_Chart->PutFirstVisibleDate(COleDateTime(2001,1,1,0,00,00).operator DATE());
	var_Chart->PutHistogramVisible(VARIANT_TRUE);
	var_Chart->PutHistogramHeight(48);
	var_Chart->PutHistogramView(EXG2ANTTLib::HistogramViewEnum(EXG2ANTTLib::exHistogramNoGrouping | EXG2ANTTLib::exHistogramLeafItems | EXG2ANTTLib::exHistogramAllItems));
	var_Chart->GetBars()->GetItem("Task")->PutHistogramPattern(EXG2ANTTLib::exPatternBDiagonal);
spG2antt1->GetColumns()->Add(L"Column");
EXG2ANTTLib::IItemsPtr var_Items = spG2antt1->GetItems();
	long h = var_Items->AddItem("Project 1");
	var_Items->AddBar(var_Items->InsertItem(h,vtMissing,"Item 1"),"Task",COleDateTime(2001,1,2,0,00,00).operator DATE(),COleDateTime(2001,1,4,0,00,00).operator DATE(),vtMissing,vtMissing);
	var_Items->AddBar(var_Items->InsertItem(h,vtMissing,"Item 2"),"Task",COleDateTime(2001,1,3,0,00,00).operator DATE(),COleDateTime(2001,1,5,0,00,00).operator DATE(),vtMissing,vtMissing);
	var_Items->PutExpandItem(h,VARIANT_TRUE);
	h = var_Items->AddItem("Project 2");
	var_Items->AddBar(var_Items->InsertItem(h,vtMissing,"Item 1"),"Task",COleDateTime(2001,1,7,0,00,00).operator DATE(),COleDateTime(2001,1,10,0,00,00).operator DATE(),vtMissing,vtMissing);
	var_Items->AddBar(var_Items->InsertItem(h,vtMissing,"Item 2"),"Task",COleDateTime(2001,1,6,0,00,00).operator DATE(),COleDateTime(2001,1,8,0,00,00).operator DATE(),vtMissing,vtMissing);
spG2antt1->EndUpdate();

2057
How can I change the visual appearance/color of the Filter For ... field

/*
	Copy and paste the following directives to your header file as
	it defines the namespace 'EXG2ANTTLib' for the library: 'ExG2antt 1.0 Control Library'

	#import <ExG2antt.dll>
	using namespace EXG2ANTTLib;
*/
EXG2ANTTLib::IG2anttPtr spG2antt1 = GetDlgItem(IDC_G2ANTT1)->GetControlUnknown();
spG2antt1->BeginUpdate();
spG2antt1->PutLinesAtRoot(EXG2ANTTLib::exLinesAtRoot);
spG2antt1->PutBackColorHeader(RGB(1,0,0));
spG2antt1->PutForeColorHeader(RGB(255,255,255));
spG2antt1->PutBackground(EXG2ANTTLib::exBackColorFilter,spG2antt1->GetBackColorHeader());
spG2antt1->PutBackground(EXG2ANTTLib::exForeColorFilter,spG2antt1->GetForeColorHeader());
spG2antt1->PutBackground(EXG2ANTTLib::exHeaderFilterBarButton,RGB(240,240,240));
spG2antt1->PutBackground(EXG2ANTTLib::exCursorHoverColumn,-1);
spG2antt1->PutHeaderAppearance(EXG2ANTTLib::Bump);
EXG2ANTTLib::IColumnPtr var_Column = ((EXG2ANTTLib::IColumnPtr)(spG2antt1->GetColumns()->Add(L"Items")));
	var_Column->PutFilterOnType(VARIANT_TRUE);
	var_Column->PutDisplayFilterButton(VARIANT_TRUE);
	var_Column->PutFilterList(EXG2ANTTLib::exNoItems);
EXG2ANTTLib::IItemsPtr var_Items = spG2antt1->GetItems();
	long h = var_Items->AddItem("Root 1");
	var_Items->InsertItem(h,vtMissing,"Child 1");
	var_Items->InsertItem(h,vtMissing,"Child 2");
	var_Items->PutExpandItem(h,VARIANT_TRUE);
	h = var_Items->AddItem("Root 2");
	var_Items->InsertItem(h,vtMissing,"Child 1");
	var_Items->InsertItem(h,vtMissing,"Child 2");
spG2antt1->EndUpdate();

2056
How can I display the cell's caption without spaces on both sides

/*
	Copy and paste the following directives to your header file as
	it defines the namespace 'EXG2ANTTLib' for the library: 'ExG2antt 1.0 Control Library'

	#import <ExG2antt.dll>
	using namespace EXG2ANTTLib;
*/
EXG2ANTTLib::IG2anttPtr spG2antt1 = GetDlgItem(IDC_G2ANTT1)->GetControlUnknown();
spG2antt1->BeginUpdate();
spG2antt1->PutColumnAutoResize(VARIANT_TRUE);
EXG2ANTTLib::IColumnPtr var_Column = ((EXG2ANTTLib::IColumnPtr)(spG2antt1->GetColumns()->Add(L"Default")));
	var_Column->PutDef(EXG2ANTTLib::exCellValueFormat,long(1));
	var_Column->PutFormatColumn(L"((trim(value) replace `   ` with ` `) replace `  ` with ` `) replace ` ` with `<bgcolor=FF0000> </bgcolor>`");
EXG2ANTTLib::IItemsPtr var_Items = spG2antt1->GetItems();
	var_Items->AddItem("");
	var_Items->AddItem("Item A");
	var_Items->AddItem("    Item B");
	var_Items->AddItem("        Item   C    ");
spG2antt1->EndUpdate();

2055
How can I highlight the spaces within the column (sample 2)

/*
	Copy and paste the following directives to your header file as
	it defines the namespace 'EXG2ANTTLib' for the library: 'ExG2antt 1.0 Control Library'

	#import <ExG2antt.dll>
	using namespace EXG2ANTTLib;
*/
EXG2ANTTLib::IG2anttPtr spG2antt1 = GetDlgItem(IDC_G2ANTT1)->GetControlUnknown();
spG2antt1->BeginUpdate();
spG2antt1->PutColumnAutoResize(VARIANT_TRUE);
EXG2ANTTLib::IColumnPtr var_Column = ((EXG2ANTTLib::IColumnPtr)(spG2antt1->GetColumns()->Add(L"Default")));
	var_Column->PutDef(EXG2ANTTLib::exCellValueFormat,long(1));
	var_Column->PutFormatColumn(L"`'` + ( value replace ` ` with `_` ) + `'`");
EXG2ANTTLib::IItemsPtr var_Items = spG2antt1->GetItems();
	var_Items->AddItem("");
	var_Items->AddItem("Item A");
	var_Items->AddItem("    Item B");
	var_Items->AddItem("        Item   C    ");
spG2antt1->EndUpdate();

2054
How can I highlight the spaces within the column (sample 1)

/*
	Copy and paste the following directives to your header file as
	it defines the namespace 'EXG2ANTTLib' for the library: 'ExG2antt 1.0 Control Library'

	#import <ExG2antt.dll>
	using namespace EXG2ANTTLib;
*/
EXG2ANTTLib::IG2anttPtr spG2antt1 = GetDlgItem(IDC_G2ANTT1)->GetControlUnknown();
spG2antt1->BeginUpdate();
spG2antt1->PutColumnAutoResize(VARIANT_TRUE);
EXG2ANTTLib::IColumnPtr var_Column = ((EXG2ANTTLib::IColumnPtr)(spG2antt1->GetColumns()->Add(L"Default")));
	var_Column->PutDef(EXG2ANTTLib::exCellValueFormat,long(1));
	var_Column->PutFormatColumn(L"len(value) = 0 ? `<bgcolor=FF0000> </bgcolor>` : ( value replace ` ` with `<bgcolor=FF0000> </bgcolor>` )");
EXG2ANTTLib::IItemsPtr var_Items = spG2antt1->GetItems();
	var_Items->AddItem("");
	var_Items->AddItem("Item A");
	var_Items->AddItem("    Item B");
	var_Items->AddItem("        Item   C    ");
spG2antt1->EndUpdate();

2053
How can I change the visual aspect of the drop down filter-calendar

/*
	Copy and paste the following directives to your header file as
	it defines the namespace 'EXG2ANTTLib' for the library: 'ExG2antt 1.0 Control Library'

	#import <ExG2antt.dll>
	using namespace EXG2ANTTLib;
*/
EXG2ANTTLib::IG2anttPtr spG2antt1 = GetDlgItem(IDC_G2ANTT1)->GetControlUnknown();
spG2antt1->BeginUpdate();
spG2antt1->PutBackground(EXG2ANTTLib::exBackColorFilter,RGB(0,0,1));
spG2antt1->PutBackground(EXG2ANTTLib::exForeColorFilter,RGB(255,255,255));
spG2antt1->PutBackground(EXG2ANTTLib::exDateScrollRange,RGB(255,255,255));
spG2antt1->PutBackground(EXG2ANTTLib::exDateHeader,spG2antt1->GetBackground(EXG2ANTTLib::exBackColorFilter));
spG2antt1->PutBackground(EXG2ANTTLib::exDateScrollThumb,RGB(128,128,128));
EXG2ANTTLib::IColumnPtr var_Column = ((EXG2ANTTLib::IColumnPtr)(spG2antt1->GetColumns()->Add(L"Date")));
	var_Column->PutFilterType(EXG2ANTTLib::exDate);
	var_Column->PutDisplayFilterButton(VARIANT_TRUE);
	var_Column->PutDisplayFilterDate(VARIANT_TRUE);
	var_Column->PutDisplayFilterPattern(VARIANT_FALSE);
spG2antt1->EndUpdate();

2052
How can I scroll the chart to ensure that a bar fits the chart's client area

// ButtonClick event - Occurs when user clicks on the cell's button.
void OnButtonClickG2antt1(long   Item,long   ColIndex,VARIANT   Key)
{
	/*
		Copy and paste the following directives to your header file as
		it defines the namespace 'EXG2ANTTLib' for the library: 'ExG2antt 1.0 Control Library'
		#import <ExG2antt.dll>
		using namespace EXG2ANTTLib;
	*/
	EXG2ANTTLib::IG2anttPtr spG2antt1 = GetDlgItem(IDC_G2ANTT1)->GetControlUnknown();
	_variant_t kBar = spG2antt1->GetItems()->GetFirstItemBar(Item);
	_variant_t dStart = spG2antt1->GetItems()->GetItemBar(Item,kBar,EXG2ANTTLib::exBarStart);
	_variant_t dEnd = spG2antt1->GetItems()->GetItemBar(Item,kBar,EXG2ANTTLib::exBarEnd);
	_variant_t dScroll = spG2antt1->FormatABC(L"(A+B)/2",dStart,dEnd,vtMissing);
	spG2antt1->GetChart()->ScrollTo(dScroll,long(1));
}

EXG2ANTTLib::IG2anttPtr spG2antt1 = GetDlgItem(IDC_G2ANTT1)->GetControlUnknown();
spG2antt1->BeginUpdate();
spG2antt1->PutShowFocusRect(VARIANT_FALSE);
spG2antt1->PutDrawGridLines(EXG2ANTTLib::exAllLines);
spG2antt1->PutGridLineStyle(EXG2ANTTLib::exGridLinesDot4);
spG2antt1->PutSelBackMode(EXG2ANTTLib::exTransparent);
EXG2ANTTLib::IChartPtr var_Chart = spG2antt1->GetChart();
	var_Chart->PutOverviewVisible(EXG2ANTTLib::OverviewVisibleEnum(EXG2ANTTLib::exOverviewShowDateTimeScaleBottom | EXG2ANTTLib::exOverviewAllowVerticalScroll | EXG2ANTTLib::exOverviewShowAllVisible));
	var_Chart->PutOverviewHeight(26);
	var_Chart->PutFirstVisibleDate(COleDateTime(2011,6,8,0,00,00).operator DATE());
	var_Chart->PutAdjustLevelsToBase(VARIANT_TRUE);
	var_Chart->PutPaneWidth(VARIANT_FALSE,64);
	var_Chart->PutUnitWidth(14);
	var_Chart->PutLevelCount(2);
	var_Chart->PutDrawGridLines(EXG2ANTTLib::exAllLines);
	var_Chart->PutGridLineStyle(EXG2ANTTLib::exGridLinesDot4);
	var_Chart->PutSelBackColor(spG2antt1->GetSelBackColor());
	var_Chart->PutColumnsFormatLevel(L"\"\":2,(\"\"/14;1/\"\"):14");
EXG2ANTTLib::IColumnsPtr var_Columns = spG2antt1->GetColumns();
	var_Columns->Add(L"Default");
	EXG2ANTTLib::IColumnPtr var_Column = ((EXG2ANTTLib::IColumnPtr)(var_Columns->Add(L"")));
		var_Column->PutDef(EXG2ANTTLib::exCellHasButton,VARIANT_TRUE);
		var_Column->PutDef(EXG2ANTTLib::exCellBackColor,long(15790320));
		var_Column->PutVisible(VARIANT_FALSE);
EXG2ANTTLib::IItemsPtr var_Items = spG2antt1->GetItems();
	var_Items->AddBar(var_Items->AddItem("T1"),"Task",COleDateTime(2011,6,9,0,00,00).operator DATE(),COleDateTime(2011,6,17,0,00,00).operator DATE(),vtMissing,vtMissing);
	var_Items->AddBar(var_Items->AddItem("T2"),"Task",COleDateTime(2012,1,10,0,00,00).operator DATE(),COleDateTime(2012,1,17,0,00,00).operator DATE(),vtMissing,vtMissing);
	var_Items->AddBar(var_Items->AddItem("T3"),"Task",COleDateTime(2013,2,19,0,00,00).operator DATE(),COleDateTime(2013,2,23,0,00,00).operator DATE(),vtMissing,vtMissing);
	var_Items->AddBar(var_Items->AddItem("T4"),"Task",COleDateTime(2014,12,19,0,00,00).operator DATE(),COleDateTime(2014,12,23,0,00,00).operator DATE(),vtMissing,vtMissing);
spG2antt1->EndUpdate();

2051
Is it possible to hide completely the list portion

/*
	Copy and paste the following directives to your header file as
	it defines the namespace 'EXG2ANTTLib' for the library: 'ExG2antt 1.0 Control Library'

	#import <ExG2antt.dll>
	using namespace EXG2ANTTLib;
*/
EXG2ANTTLib::IG2anttPtr spG2antt1 = GetDlgItem(IDC_G2ANTT1)->GetControlUnknown();
spG2antt1->BeginUpdate();
spG2antt1->PutHeaderHeight(32);
spG2antt1->PutOnResizeControl(EXG2ANTTLib::OnResizeControlEnum(EXG2ANTTLib::exDisableSplitter | EXG2ANTTLib::exResizeChart));
spG2antt1->PutDrawGridLines(EXG2ANTTLib::exAllLines);
EXG2ANTTLib::IConditionalFormatPtr var_ConditionalFormat = spG2antt1->GetConditionalFormats()->Add(L"%CS0 = 1",vtMissing);
	var_ConditionalFormat->PutApplyToBars(L"Task");
	var_ConditionalFormat->PutBarColor(RGB(255,0,0));
EXG2ANTTLib::IChartPtr var_Chart = spG2antt1->GetChart();
	var_Chart->PutFirstVisibleDate(COleDateTime(2011,6,8,0,00,00).operator DATE());
	var_Chart->PutAdjustLevelsToBase(VARIANT_TRUE);
	var_Chart->PutPaneWidth(VARIANT_FALSE,0);
	var_Chart->PutLevelCount(2);
	var_Chart->PutAllowInsideZoom(VARIANT_TRUE);
	EXG2ANTTLib::ILevelPtr var_Level = var_Chart->GetLevel(0);
		var_Level->PutAlignment(EXG2ANTTLib::CenterAlignment);
		var_Level->PutLabel("<b><%d%>-<%mmm%>-<%yyyy%>");
		var_Level->PutUnit(EXG2ANTTLib::exDay);
	EXG2ANTTLib::ILevelPtr var_Level1 = var_Chart->GetLevel(1);
		var_Level1->PutLabel("<%h%>");
		var_Level1->PutCount(8);
		var_Level1->PutUnit(EXG2ANTTLib::exHour);
		var_Level1->PutFormatLabel(_bstr_t("date(int(dvalue)) case (#06/08/2011# : (int(value) case ( 0 : 'Shift <b>1</b><br>23/20'; 8 : 'Shift <b>2</b><br>38/30' ; 16 : '") +
"Shift <b>3</b><br>24/24' ) ) ; #06/09/2011# : (int(value) case ( 0 : 'Shift <b>1</b><br>15/20'; 8 : 'Shift <b>2</b><br>30/32' ; " +
"16 : 'Shift <b>3</b><br>26/24' ) ) )");
	var_Chart->PutUnitWidth(64);
	var_Chart->PutNonworkingDays(0);
	var_Chart->PutColumnsFormatLevel(L"0");
	var_Chart->PutAllowInsideZoom(VARIANT_TRUE);
	var_Chart->GetDefaultInsideZoomFormat()->PutInsideUnit(EXG2ANTTLib::exMinute);
	var_Chart->PutAllowResizeInsideZoom(VARIANT_FALSE);
	var_Chart->PutInsideZoomOnDblClick(VARIANT_FALSE);
	EXG2ANTTLib::IInsideZoomsPtr var_InsideZooms = var_Chart->GetInsideZooms();
		var_InsideZooms->PutSplitBaseLevel(VARIANT_FALSE);
		var_InsideZooms->PutDefaultWidth(0);
	EXG2ANTTLib::IInsideZoomsPtr var_InsideZooms1 = var_Chart->GetInsideZooms();
		var_InsideZooms1->Add(COleDateTime(2011,6,9,8,00,00).operator DATE());
		var_InsideZooms1->Add(COleDateTime(2011,6,9,16,00,00).operator DATE());
	var_Chart->PutDrawGridLines(EXG2ANTTLib::exAllLines);
	var_Chart->PutGridLineStyle(EXG2ANTTLib::exGridLinesDot4);
((EXG2ANTTLib::IColumnPtr)(spG2antt1->GetColumns()->Add(L"Defaul")))->PutDef(EXG2ANTTLib::exCellHasCheckBox,VARIANT_TRUE);
EXG2ANTTLib::IItemsPtr var_Items = spG2antt1->GetItems();
	var_Items->AddBar(var_Items->AddItem("T1"),"Task",COleDateTime(2011,6,8,8,00,00).operator DATE(),COleDateTime(2011,6,10,0,00,00).operator DATE(),vtMissing,vtMissing);
	var_Items->AddBar(var_Items->AddItem("T2"),"Task",COleDateTime(2011,6,8,16,00,00).operator DATE(),COleDateTime(2011,6,10,8,00,00).operator DATE(),vtMissing,vtMissing);
	var_Items->AddBar(var_Items->AddItem("T3"),"Task",COleDateTime(2011,6,9,0,00,00).operator DATE(),COleDateTime(2011,6,10,0,00,00).operator DATE(),vtMissing,vtMissing);
	var_Items->PutCellState(var_Items->GetItemByIndex(1),long(0),1);
spG2antt1->EndUpdate();

2050
How can I find out what exBarWorkingCount represents

/*
	Copy and paste the following directives to your header file as
	it defines the namespace 'EXG2ANTTLib' for the library: 'ExG2antt 1.0 Control Library'

	#import <ExG2antt.dll>
	using namespace EXG2ANTTLib;
*/
EXG2ANTTLib::IG2anttPtr spG2antt1 = GetDlgItem(IDC_G2ANTT1)->GetControlUnknown();
spG2antt1->BeginUpdate();
EXG2ANTTLib::IColumnPtr var_Column = ((EXG2ANTTLib::IColumnPtr)(spG2antt1->GetColumns()->Add(L"Tasks")));
	var_Column->PutAllowSizing(VARIANT_FALSE);
	var_Column->PutWidth(42);
EXG2ANTTLib::IColumnPtr var_Column1 = ((EXG2ANTTLib::IColumnPtr)(spG2antt1->GetColumns()->Add(L"Format")));
	var_Column1->PutDef(EXG2ANTTLib::exCellValueToItemBarProperty,long(258));
	var_Column1->PutFormatColumn(_bstr_t("trim((1:=int((0:=value)/365) ? =:1 + ` year(s) ` : ``)  + (1:=int((0:=(=:0 - (=:1*365)))/31) ? =:1 + ` month(s) ` : ``) + (1:=i") +
"nt((0:=(=:0 - (=:1*31)))/7) ? =:1 + ` week(s) ` : ``) + (1:=int((0:=(=:0 - (=:1*7)))/1) ? =:1 + ` day(s) ` : ``) + (1:=int((0:=(" +
"=:0 - =:1 + 1/24/60/60/2))*24) ? =:1 + ` hour(s) ` : ``) + (1:=int((0:=(=:0*24 - =:1))*60) ? =:1 + ` min(s) ` : ``) + (1:=int((0" +
":=(=:0*60 - =:1))*60) ? =:1 + ` sec(s)` : ``))");
EXG2ANTTLib::IColumnPtr var_Column2 = ((EXG2ANTTLib::IColumnPtr)(spG2antt1->GetColumns()->Add(L"Value")));
	var_Column2->PutDef(EXG2ANTTLib::exCellValueToItemBarProperty,long(258));
	var_Column2->PutSortType(EXG2ANTTLib::SortNumeric);
	var_Column2->GetEditor()->PutEditType(EXG2ANTTLib::EditType);
spG2antt1->PutHeaderAppearance(EXG2ANTTLib::Etched);
spG2antt1->PutDrawGridLines(EXG2ANTTLib::exRowLines);
spG2antt1->PutGridLineStyle(EXG2ANTTLib::exGridLinesSolid);
spG2antt1->PutSelBackColor(RGB(204,232,255));
spG2antt1->PutSelForeColor(RGB(0,0,0));
EXG2ANTTLib::IChartPtr var_Chart = spG2antt1->GetChart();
	var_Chart->PutSelBackColor(spG2antt1->GetSelBackColor());
	var_Chart->PutFirstVisibleDate(COleDateTime(2009,4,6,0,00,00).operator DATE());
	var_Chart->PutPaneWidth(VARIANT_FALSE,256);
	var_Chart->PutLevelCount(2);
	var_Chart->PutUnitScale(EXG2ANTTLib::exHour);
	var_Chart->PutNonworkingHours(15728767);
	var_Chart->PutShowNonworkingDates(VARIANT_FALSE);
	var_Chart->PutShowNonworkingUnits(VARIANT_FALSE);
	var_Chart->PutShowNonworkingHours(VARIANT_FALSE);
	EXG2ANTTLib::IBarPtr var_Bar = var_Chart->GetBars()->GetItem("Task");
		var_Bar->PutDef(EXG2ANTTLib::exBarKeepWorkingCount,VARIANT_TRUE);
	var_Chart->PutAllowLinkBars(VARIANT_FALSE);
	var_Chart->PutDrawGridLines(EXG2ANTTLib::exRowLines);
	var_Chart->PutGridLineStyle(EXG2ANTTLib::exGridLinesSolid);
	var_Chart->GetLevel(0)->PutDrawGridLines(VARIANT_TRUE);
	var_Chart->PutResizeUnitScale(EXG2ANTTLib::exMinute);
	var_Chart->PutResizeUnitCount(15);
	var_Chart->PutLabel(EXG2ANTTLib::exMinute,_bstr_t("<|><%nn%><|><%h%>:<%nn%> <%AM/PM%><|><%d3%>, <%m3%> <%d%>, '<%yy%> <%h%>:<%nn%> <%AM/PM%><|><%dddd%>, <%mmmm%> <%d%>, <%yyyy%> ") +
"<%h%>:<%nn%> <%AM/PM%><||>15");
	var_Chart->PutAllowZoomOnFly(EXG2ANTTLib::ZoomOnFlyEnum(EXG2ANTTLib::exZoomOnFlyIncludeNeighborItems | EXG2ANTTLib::exZoomOnFly));
	var_Chart->PutBackColorZoomOnFly(RGB(255,255,0));
spG2antt1->GetItems()->PutAllowCellValueToItemBar(VARIANT_TRUE);
EXG2ANTTLib::IItemsPtr var_Items = spG2antt1->GetItems();
	long h = var_Items->AddItem("");
	var_Items->PutSelectableItem(h,VARIANT_FALSE);
	var_Items->PutSortableItem(h,VARIANT_FALSE);
	var_Items->AddBar(var_Items->AddItem("T1"),"Task",COleDateTime(2009,4,6,10,00,00).operator DATE(),COleDateTime(2009,4,6,13,00,00).operator DATE(),vtMissing,vtMissing);
	var_Items->AddBar(var_Items->AddItem("T2"),"Task",COleDateTime(2009,4,6,10,00,00).operator DATE(),COleDateTime(2009,4,6,16,00,00).operator DATE(),vtMissing,vtMissing);
	var_Items->AddBar(var_Items->AddItem("T3"),"Task",COleDateTime(2009,4,6,10,00,00).operator DATE(),COleDateTime(2009,4,6,19,00,00).operator DATE(),vtMissing,vtMissing);
	h = var_Items->AddItem("");
	var_Items->PutSelectableItem(h,VARIANT_FALSE);
	var_Items->PutSortableItem(h,VARIANT_FALSE);
spG2antt1->EndUpdate();

2049
How can I hide the filter bar description

/*
	Copy and paste the following directives to your header file as
	it defines the namespace 'EXG2ANTTLib' for the library: 'ExG2antt 1.0 Control Library'

	#import <ExG2antt.dll>
	using namespace EXG2ANTTLib;
*/
EXG2ANTTLib::IG2anttPtr spG2antt1 = GetDlgItem(IDC_G2ANTT1)->GetControlUnknown();
spG2antt1->BeginUpdate();
EXG2ANTTLib::IColumnPtr var_Column = ((EXG2ANTTLib::IColumnPtr)(spG2antt1->GetColumns()->Add(L"Filter")));
	var_Column->PutDisplayFilterButton(VARIANT_TRUE);
	var_Column->PutFilterType(EXG2ANTTLib::exFilter);
	var_Column->PutFilter(L"B");
EXG2ANTTLib::IItemsPtr var_Items = spG2antt1->GetItems();
	var_Items->AddItem("A");
	var_Items->AddItem("B");
	var_Items->AddItem("C");
spG2antt1->ApplyFilter();
spG2antt1->PutFilterBarHeight(0);
spG2antt1->EndUpdate();

2048
How can I add a break bar

/*
	Copy and paste the following directives to your header file as
	it defines the namespace 'EXG2ANTTLib' for the library: 'ExG2antt 1.0 Control Library'

	#import <ExG2antt.dll>
	using namespace EXG2ANTTLib;
*/
EXG2ANTTLib::IG2anttPtr spG2antt1 = GetDlgItem(IDC_G2ANTT1)->GetControlUnknown();
spG2antt1->BeginUpdate();
EXG2ANTTLib::IColumnPtr var_Column = ((EXG2ANTTLib::IColumnPtr)(spG2antt1->GetColumns()->Add(L"Tasks")));
	var_Column->PutAllowSizing(VARIANT_FALSE);
	var_Column->PutWidth(42);
EXG2ANTTLib::IColumnPtr var_Column1 = ((EXG2ANTTLib::IColumnPtr)(spG2antt1->GetColumns()->Add(L"Working")));
	var_Column1->PutDef(EXG2ANTTLib::exCellValueToItemBarProperty,long(258));
	var_Column1->PutFormatColumn(_bstr_t("((1:=int(0:= (value))) != 0 ? (=:1 + ' day(s)') : '') + (=:1 ? ' ' : '' ) + ((1:=int(0:=((=:0 - =:1 + 1/24/60/60/2)*24))) != 0 ") +
"? =:1 + ' hour(s)' : '' ) + (=:1 ? ' ' : '' ) + ((1:=round((=:0 - =:1)*60)) != 0 ? =:1 + ' min(s)' : '')");
spG2antt1->PutHeaderAppearance(EXG2ANTTLib::Etched);
spG2antt1->PutDrawGridLines(EXG2ANTTLib::exRowLines);
spG2antt1->PutGridLineStyle(EXG2ANTTLib::exGridLinesSolid);
spG2antt1->PutSelBackColor(RGB(204,232,255));
spG2antt1->PutSelForeColor(RGB(0,0,0));
EXG2ANTTLib::IChartPtr var_Chart = spG2antt1->GetChart();
	var_Chart->PutSelBackColor(spG2antt1->GetSelBackColor());
	var_Chart->PutFirstVisibleDate(COleDateTime(2009,4,6,0,00,00).operator DATE());
	var_Chart->PutPaneWidth(VARIANT_FALSE,164);
	var_Chart->PutLevelCount(2);
	var_Chart->PutUnitScale(EXG2ANTTLib::exHour);
	var_Chart->PutNonworkingHours(15728767);
	var_Chart->PutShowNonworkingDates(VARIANT_FALSE);
	var_Chart->PutShowNonworkingUnits(VARIANT_FALSE);
	var_Chart->PutShowNonworkingHours(VARIANT_FALSE);
	EXG2ANTTLib::IBarPtr var_Bar = var_Chart->GetBars()->Add(L"Task:Split");
		var_Bar->PutDef(EXG2ANTTLib::exBarKeepWorkingCount,VARIANT_TRUE);
		var_Bar->PutShortcut(L"Task");
	var_Chart->PutAllowLinkBars(VARIANT_FALSE);
	var_Chart->PutDrawGridLines(EXG2ANTTLib::exRowLines);
	var_Chart->PutGridLineStyle(EXG2ANTTLib::exGridLinesSolid);
	var_Chart->GetLevel(0)->PutDrawGridLines(VARIANT_TRUE);
	var_Chart->PutResizeUnitScale(EXG2ANTTLib::exMinute);
	var_Chart->PutResizeUnitCount(15);
	var_Chart->PutLabel(EXG2ANTTLib::exMinute,_bstr_t("<|><%nn%><|><%h%>:<%nn%> <%AM/PM%><|><%d3%>, <%m3%> <%d%>, '<%yy%> <%h%>:<%nn%> <%AM/PM%><|><%dddd%>, <%mmmm%> <%d%>, <%yyyy%> ") +
"<%h%>:<%nn%> <%AM/PM%><||>15");
	var_Chart->PutAllowZoomOnFly(EXG2ANTTLib::ZoomOnFlyEnum(EXG2ANTTLib::exZoomOnFlyIncludeNeighborItems | EXG2ANTTLib::exZoomOnFly));
	var_Chart->PutBackColorZoomOnFly(RGB(255,255,0));
	var_Chart->PutAllowNonworkingBars(VARIANT_TRUE);
spG2antt1->GetItems()->PutAllowCellValueToItemBar(VARIANT_TRUE);
EXG2ANTTLib::IItemsPtr var_Items = spG2antt1->GetItems();
	var_Items->AddItem("");
	long h = var_Items->AddItem("T1");
	var_Items->PutItemNonworkingUnits(h,VARIANT_FALSE,L"(weekday(value) in (0,6)) or (timeF(value) < `07:00:00`) or (timeF(value) >= `20:00:00`) ");
	var_Items->AddBar(h,"",COleDateTime(2009,4,6,7,30,00).operator DATE(),COleDateTime(2009,4,6,9,30,00).operator DATE(),"A","<c><font ;4>break<br>bar");
	var_Items->PutItemBar(h,"A",EXG2ANTTLib::exBarTreatAsNonworking,VARIANT_TRUE);
	var_Items->AddBar(h,"Task",COleDateTime(2009,4,6,10,00,00).operator DATE(),COleDateTime(2009,4,6,12,00,00).operator DATE(),vtMissing,vtMissing);
	var_Items->AddBar(var_Items->AddItem("T2"),"Task",COleDateTime(2009,4,6,10,00,00).operator DATE(),COleDateTime(2009,4,6,17,45,00).operator DATE(),vtMissing,vtMissing);
	var_Items->AddItem("");
spG2antt1->EndUpdate();

2047
It seems the ResizeUnitCount have no effect on the ZoomOnFly feature, is it normal

/*
	Copy and paste the following directives to your header file as
	it defines the namespace 'EXG2ANTTLib' for the library: 'ExG2antt 1.0 Control Library'

	#import <ExG2antt.dll>
	using namespace EXG2ANTTLib;
*/
EXG2ANTTLib::IG2anttPtr spG2antt1 = GetDlgItem(IDC_G2ANTT1)->GetControlUnknown();
spG2antt1->BeginUpdate();
EXG2ANTTLib::IColumnPtr var_Column = ((EXG2ANTTLib::IColumnPtr)(spG2antt1->GetColumns()->Add(L"Tasks")));
	var_Column->PutAllowSizing(VARIANT_FALSE);
	var_Column->PutWidth(42);
EXG2ANTTLib::IColumnPtr var_Column1 = ((EXG2ANTTLib::IColumnPtr)(spG2antt1->GetColumns()->Add(L"Working")));
	var_Column1->PutDef(EXG2ANTTLib::exCellValueToItemBarProperty,long(258));
	var_Column1->PutFormatColumn(_bstr_t("((1:=int(0:= (value))) != 0 ? (=:1 + ' day(s)') : '') + (=:1 ? ' ' : '' ) + ((1:=int(0:=((=:0 - =:1 + 1/24/60/60/2)*24))) != 0 ") +
"? =:1 + ' hour(s)' : '' ) + (=:1 ? ' ' : '' ) + ((1:=round((=:0 - =:1)*60)) != 0 ? =:1 + ' min(s)' : '')");
spG2antt1->PutHeaderAppearance(EXG2ANTTLib::Etched);
spG2antt1->PutDrawGridLines(EXG2ANTTLib::exRowLines);
spG2antt1->PutGridLineStyle(EXG2ANTTLib::exGridLinesSolid);
spG2antt1->PutSelBackColor(RGB(204,232,255));
spG2antt1->PutSelForeColor(RGB(0,0,0));
EXG2ANTTLib::IChartPtr var_Chart = spG2antt1->GetChart();
	var_Chart->PutSelBackColor(spG2antt1->GetSelBackColor());
	var_Chart->PutFirstVisibleDate(COleDateTime(2009,4,6,0,00,00).operator DATE());
	var_Chart->PutPaneWidth(VARIANT_FALSE,164);
	var_Chart->PutLevelCount(2);
	var_Chart->PutUnitScale(EXG2ANTTLib::exHour);
	var_Chart->PutNonworkingHours(15728767);
	var_Chart->PutShowNonworkingDates(VARIANT_FALSE);
	var_Chart->PutShowNonworkingUnits(VARIANT_FALSE);
	var_Chart->PutShowNonworkingHours(VARIANT_FALSE);
	EXG2ANTTLib::IBarPtr var_Bar = var_Chart->GetBars()->GetItem("Task");
		var_Bar->PutDef(EXG2ANTTLib::exBarKeepWorkingCount,VARIANT_TRUE);
	var_Chart->PutAllowLinkBars(VARIANT_FALSE);
	var_Chart->PutDrawGridLines(EXG2ANTTLib::exRowLines);
	var_Chart->PutGridLineStyle(EXG2ANTTLib::exGridLinesSolid);
	var_Chart->GetLevel(0)->PutDrawGridLines(VARIANT_TRUE);
	var_Chart->PutResizeUnitScale(EXG2ANTTLib::exMinute);
	var_Chart->PutResizeUnitCount(15);
	var_Chart->PutLabel(EXG2ANTTLib::exMinute,_bstr_t("<|><%nn%><|><%h%>:<%nn%> <%AM/PM%><|><%d3%>, <%m3%> <%d%>, '<%yy%> <%h%>:<%nn%> <%AM/PM%><|><%dddd%>, <%mmmm%> <%d%>, <%yyyy%> ") +
"<%h%>:<%nn%> <%AM/PM%><||>15");
	var_Chart->PutAllowZoomOnFly(EXG2ANTTLib::ZoomOnFlyEnum(EXG2ANTTLib::exZoomOnFlyIncludeNeighborItems | EXG2ANTTLib::exZoomOnFly));
	var_Chart->PutBackColorZoomOnFly(RGB(255,255,0));
spG2antt1->GetItems()->PutAllowCellValueToItemBar(VARIANT_TRUE);
EXG2ANTTLib::IItemsPtr var_Items = spG2antt1->GetItems();
	var_Items->AddItem("");
	var_Items->AddBar(var_Items->AddItem("T1"),"Task",COleDateTime(2009,4,6,10,00,00).operator DATE(),COleDateTime(2009,4,6,12,00,00).operator DATE(),vtMissing,vtMissing);
	var_Items->AddBar(var_Items->AddItem("T2"),"Task",COleDateTime(2009,4,6,10,00,00).operator DATE(),COleDateTime(2009,4,6,17,45,00).operator DATE(),vtMissing,vtMissing);
	var_Items->AddItem("");
spG2antt1->EndUpdate();

2046
Export Data in HTML format

// AddGroupItem event - Occurs after a new Group Item has been inserted to Items collection.
void OnAddGroupItemG2antt1(long   Item)
{
	/*
		Copy and paste the following directives to your header file as
		it defines the namespace 'EXG2ANTTLib' for the library: 'ExG2antt 1.0 Control Library'
		#import <ExG2antt.dll>
		using namespace EXG2ANTTLib;
	*/
	EXG2ANTTLib::IG2anttPtr spG2antt1 = GetDlgItem(IDC_G2ANTT1)->GetControlUnknown();
	EXG2ANTTLib::IItemsPtr var_Items = spG2antt1->GetItems();
		var_Items->PutItemBold(Item,VARIANT_TRUE);
		var_Items->AddBar(Item,"Summary",var_Items->GetCellValue(Item,long(2)),var_Items->GetCellValue(Item,long(4)),vtMissing,vtMissing);
		var_Items->DefineSummaryBars(Item,"",-3,"");
}

// AddItem event - Occurs after a new Item has been inserted to Items collection.
void OnAddItemG2antt1(long   Item)
{
	EXG2ANTTLib::IG2anttPtr spG2antt1 = GetDlgItem(IDC_G2ANTT1)->GetControlUnknown();
	EXG2ANTTLib::IItemsPtr var_Items = spG2antt1->GetItems();
		long i = var_Items->GetItemToIndex(Item);
		var_Items->AddBar(Item,"Task",COleDateTime(2008,1,2,0,00,00).operator DATE(),COleDateTime(2008,1,9,0,00,00).operator DATE(),"",vtMissing);
		var_Items->PutItemBar(Item,"",EXG2ANTTLib::exBarMove,i);
		var_Items->PutItemBar(Item,"",EXG2ANTTLib::exBarDuration,i);
}

EXG2ANTTLib::IG2anttPtr spG2antt1 = GetDlgItem(IDC_G2ANTT1)->GetControlUnknown();
spG2antt1->BeginUpdate();
spG2antt1->PutBackColorAlternate(RGB(240,240,240));
spG2antt1->PutDrawGridLines(EXG2ANTTLib::exAllLines);
spG2antt1->PutHeaderAppearance(EXG2ANTTLib::Etched);
spG2antt1->PutDescription(EXG2ANTTLib::exFilterBarAnd,_bstr_t(spG2antt1->FormatABC(L"`<fgcolor=808080> ` + value + ` </fgcolor>`",spG2antt1->GetDescription(EXG2ANTTLib::exFilterBarAnd),vtMissing,vtMissing)));
spG2antt1->PutFilterBarCaption(_bstr_t("(( ( value replace `[<b>` with `<bgcolor=000000><fgcolor=FFFFFF><b> ` replace `</b>]` with ` </b></bgcolor></fgcolor>` replace ") +
"`[<s>` with `<bgcolor=C0C0C0><fgcolor=FFFFFF> ` replace `</s>]` with ` </fgcolor></bgcolor>` )  + `<r><fgcolor=808080>` + ( matc" +
"hitemcount < 0 ? ( ( len(value) ? `` : `` ) + `<r>` + abs(matchitemcount + 1) + ` result(s)` ) : (`<r><fgcolor=808080>`+ itemcou" +
"nt + ` item(s)`) )))");
spG2antt1->PutFilterBarPromptVisible(EXG2ANTTLib::FilterBarVisibleEnum(EXG2ANTTLib::exFilterBarCompact | EXG2ANTTLib::exFilterBarShowCloseIfRequired | EXG2ANTTLib::exFilterBarSingleLine | EXG2ANTTLib::exFilterBarVisible | EXG2ANTTLib::exFilterBarPromptVisible));
spG2antt1->PutFilterBarPromptType(EXG2ANTTLib::exFilterPromptContainsAny);
spG2antt1->PutSingleSort(VARIANT_FALSE);
spG2antt1->PutAllowGroupBy(VARIANT_TRUE);
spG2antt1->PutBackColorSortBar(spG2antt1->GetBackColor());
spG2antt1->PutDrawGridLines(EXG2ANTTLib::exAllLines);
EXG2ANTTLib::IAppearancePtr var_Appearance = spG2antt1->GetVisualAppearance();
	var_Appearance->Add(1,_bstr_t("gBFLBCJwBAEHhEJAAEhABOUGACAADACAxRDgMQBQKAAzAJBIYhiG4cYCgMZhXDOCYXABCEYRXBIZQ7BKNIxjSJwFgmEgADCMQwAFBIbhrE4ZBjHGQRUgyI43RhHUBzV") +
"IUBxDEaTZLlEYJBgeHYhDJPcaUVDcWQHGyeZwjSgpKoWSJIU5NcggPDgEwTKCmKlTAKoSzJMyEmwWRAdVTZLSEaxierKPhyWT/XgAF4PfDFKRXFqXY5mKZJFqKOI8TxI" +
"NgxPQMGyrBqraLqKwQGrGCQKSBhUZ3dS2JR3OSlYRuQAMVgOXoDZhPWZXbDtSzPE63NgtOR5DiGWalABoeoxRa9cz3ViCJSrGTqIoINIzZLHFQbPpdAYdP6BeIjXhhZx" +
"BBuLZXmEOh9CcNoni2N4MjWVodh+DpfBeLJinsWR9AyYwVAkGBhEAFphGiRogDEGBamkFgtjcZgHiMbgehYaQhAIEIREAaQYkcQZUHIGRUGQDBOEaBAhDYDxGkMZAkCg" +
"eoagYZAYEYAYIAWGhemICIFj8WIiCiFR5gkIhogmBoKGKJx2C6C5hniMgggqYwog0UoNGMZJiDiCZRgOLY0ECUAQICA==");
	var_Appearance->PutRenderType(-268435456);
EXG2ANTTLib::IChartPtr var_Chart = spG2antt1->GetChart();
	var_Chart->PutDrawGridLines(EXG2ANTTLib::exAllLines);
	var_Chart->PutPaneWidth(VARIANT_FALSE,196);
	var_Chart->PutLevelCount(2);
	var_Chart->PutFirstVisibleDate(COleDateTime(2008,1,1,0,00,00).operator DATE());
	var_Chart->PutFirstWeekDay(EXG2ANTTLib::exMonday);
	EXG2ANTTLib::IBarPtr var_Bar = var_Chart->GetBars()->GetItem("Summary");
		var_Bar->PutStartShape(EXG2ANTTLib::exShapeIconEmpty);
		var_Bar->PutEndShape(EXG2ANTTLib::exShapeIconEmpty);
		var_Bar->PutShape(EXG2ANTTLib::exShapeSolid);
		var_Bar->PutColor(0x1808080);
		var_Bar->PutHeight(7);
		var_Bar->PutDef(EXG2ANTTLib::exBarCaption,"<%=%513%>");
		var_Bar->PutDef(EXG2ANTTLib::exBarHAlignCaption,long(18));
	EXG2ANTTLib::IBarPtr var_Bar1 = var_Chart->GetBars()->GetItem("Task");
		var_Bar1->PutDef(EXG2ANTTLib::exBarCaption,"<%=(%2-%1) in (3,5) ? %513 : `` %>");
		var_Bar1->PutDef(EXG2ANTTLib::exBarHAlignCaption,long(18));
EXG2ANTTLib::IConditionalFormatPtr var_ConditionalFormat = spG2antt1->GetConditionalFormats()->Add(L"(%2 - %1) = 3","K3");
	var_ConditionalFormat->PutForeColor(RGB(255,0,0));
	var_ConditionalFormat->PutBarColor(var_ConditionalFormat->GetForeColor());
	var_ConditionalFormat->PutApplyToBars(L"Task");
EXG2ANTTLib::IConditionalFormatPtr var_ConditionalFormat1 = spG2antt1->GetConditionalFormats()->Add(L"(%2 - %1) = 5","K5");
	var_ConditionalFormat1->PutForeColor(RGB(0,255,0));
	var_ConditionalFormat1->PutBarColor(var_ConditionalFormat1->GetForeColor());
	var_ConditionalFormat1->PutApplyToBars(L"Task");
EXG2ANTTLib::IColumnsPtr var_Columns = spG2antt1->GetColumns();
	((EXG2ANTTLib::IColumnPtr)(var_Columns->Add(L"Tasks")))->PutDef(EXG2ANTTLib::exCellHasCheckBox,VARIANT_TRUE);
	EXG2ANTTLib::IColumnPtr var_Column = ((EXG2ANTTLib::IColumnPtr)(var_Columns->Add(L"Start")));
		var_Column->PutDef(EXG2ANTTLib::exCellValueToItemBarProperty,long(1));
		var_Column->PutDef(EXG2ANTTLib::exCellValueToItemBarKey,"");
	EXG2ANTTLib::IColumnPtr var_Column1 = ((EXG2ANTTLib::IColumnPtr)(var_Columns->Add(L"End")));
		var_Column1->PutDef(EXG2ANTTLib::exCellValueToItemBarProperty,long(2));
		var_Column1->PutDef(EXG2ANTTLib::exCellValueToItemBarKey,"");
EXG2ANTTLib::IItemsPtr var_Items = spG2antt1->GetItems();
	var_Items->PutAllowCellValueToItemBar(VARIANT_TRUE);
	var_Items->AddItem("Task A");
	var_Items->AddItem("Task A");
	var_Items->AddItem("Task A");
	var_Items->AddItem("Task A");
	var_Items->AddItem("Task B");
	var_Items->AddItem("Task B");
	var_Items->AddItem("Task B");
	var_Items->AddItem("Task C");
spG2antt1->GetColumns()->GetItem("Tasks")->PutSortOrder(EXG2ANTTLib::SortAscending);
spG2antt1->EndUpdate();
_bstr_t sFile = "c:/temp/export.html";
spG2antt1->Export(sFile,"vis");
/*
	Includes the definition for CreateObject function like follows:

	#include <comdef.h>
	IUnknownPtr CreateObject( BSTR Object )
	{
		IUnknownPtr spResult;
		spResult.CreateInstance( Object );
		return spResult;
	};

*/
/*
	Copy and paste the following directives to your header file as
	it defines the namespace 'SHDocVw' for the library: 'Microsoft Internet Controls'

	#import <ieframe.dll>
*/
SHDocVw::IWebBrowser2Ptr var_ShellBrowserWindow = ::CreateObject(L"InternetExplorer.Application");
	var_ShellBrowserWindow->Navigate2(sFile,vtMissing,vtMissing,vtMissing,vtMissing);

2045
Export Data in CSV format

// AddItem event - Occurs after a new Item has been inserted to Items collection.
void OnAddItemG2antt1(long   Item)
{
	/*
		Copy and paste the following directives to your header file as
		it defines the namespace 'EXG2ANTTLib' for the library: 'ExG2antt 1.0 Control Library'
		#import <ExG2antt.dll>
		using namespace EXG2ANTTLib;
	*/
	EXG2ANTTLib::IG2anttPtr spG2antt1 = GetDlgItem(IDC_G2ANTT1)->GetControlUnknown();
	EXG2ANTTLib::IItemsPtr var_Items = spG2antt1->GetItems();
		long i = var_Items->GetItemToIndex(Item);
		var_Items->AddBar(Item,"Task",COleDateTime(2008,1,2,0,00,00).operator DATE(),COleDateTime(2008,1,9,0,00,00).operator DATE(),"",vtMissing);
		var_Items->PutItemBar(Item,"",EXG2ANTTLib::exBarMove,i);
		var_Items->PutItemBar(Item,"",EXG2ANTTLib::exBarDuration,i);
}

EXG2ANTTLib::IG2anttPtr spG2antt1 = GetDlgItem(IDC_G2ANTT1)->GetControlUnknown();
spG2antt1->BeginUpdate();
spG2antt1->PutBackColorAlternate(RGB(240,240,240));
spG2antt1->PutDrawGridLines(EXG2ANTTLib::exAllLines);
spG2antt1->PutHeaderAppearance(EXG2ANTTLib::Etched);
spG2antt1->PutDescription(EXG2ANTTLib::exFilterBarAnd,_bstr_t(spG2antt1->FormatABC(L"`<fgcolor=808080> ` + value + ` </fgcolor>`",spG2antt1->GetDescription(EXG2ANTTLib::exFilterBarAnd),vtMissing,vtMissing)));
spG2antt1->PutFilterBarCaption(_bstr_t("(( ( value replace `[<b>` with `<bgcolor=000000><fgcolor=FFFFFF><b> ` replace `</b>]` with ` </b></bgcolor></fgcolor>` replace ") +
"`[<s>` with `<bgcolor=C0C0C0><fgcolor=FFFFFF> ` replace `</s>]` with ` </fgcolor></bgcolor>` )  + `<r><fgcolor=808080>` + ( matc" +
"hitemcount < 0 ? ( ( len(value) ? `` : `` ) + `<r>` + abs(matchitemcount + 1) + ` result(s)` ) : (`<r><fgcolor=808080>`+ itemcou" +
"nt + ` item(s)`) )))");
spG2antt1->PutFilterBarPromptVisible(EXG2ANTTLib::FilterBarVisibleEnum(EXG2ANTTLib::exFilterBarCompact | EXG2ANTTLib::exFilterBarShowCloseIfRequired | EXG2ANTTLib::exFilterBarSingleLine | EXG2ANTTLib::exFilterBarVisible | EXG2ANTTLib::exFilterBarPromptVisible));
spG2antt1->PutFilterBarPromptType(EXG2ANTTLib::exFilterPromptContainsAny);
EXG2ANTTLib::IChartPtr var_Chart = spG2antt1->GetChart();
	var_Chart->PutPaneWidth(VARIANT_FALSE,196);
	var_Chart->PutLevelCount(2);
	var_Chart->PutFirstVisibleDate(COleDateTime(2008,1,1,0,00,00).operator DATE());
	EXG2ANTTLib::IBarPtr var_Bar = var_Chart->GetBars()->GetItem("Task");
		var_Bar->PutDef(EXG2ANTTLib::exBarCaption,"<%=(%2-%1) in (3,5) ? %513 : `` %>");
		var_Bar->PutDef(EXG2ANTTLib::exBarHAlignCaption,long(18));
EXG2ANTTLib::IConditionalFormatPtr var_ConditionalFormat = spG2antt1->GetConditionalFormats()->Add(L"(%2 - %1) = 3","K3");
	var_ConditionalFormat->PutForeColor(RGB(255,0,0));
	var_ConditionalFormat->PutBarColor(var_ConditionalFormat->GetForeColor());
	var_ConditionalFormat->PutApplyToBars(L"Task");
EXG2ANTTLib::IConditionalFormatPtr var_ConditionalFormat1 = spG2antt1->GetConditionalFormats()->Add(L"(%2 - %1) = 5","K5");
	var_ConditionalFormat1->PutForeColor(RGB(0,255,0));
	var_ConditionalFormat1->PutBarColor(var_ConditionalFormat1->GetForeColor());
	var_ConditionalFormat1->PutApplyToBars(L"Task");
EXG2ANTTLib::IColumnsPtr var_Columns = spG2antt1->GetColumns();
	((EXG2ANTTLib::IColumnPtr)(var_Columns->Add(L"Tasks")))->PutDef(EXG2ANTTLib::exCellHasCheckBox,VARIANT_TRUE);
	EXG2ANTTLib::IColumnPtr var_Column = ((EXG2ANTTLib::IColumnPtr)(var_Columns->Add(L"Start")));
		var_Column->PutDef(EXG2ANTTLib::exCellValueToItemBarProperty,long(1));
		var_Column->PutDef(EXG2ANTTLib::exCellValueToItemBarKey,"");
	EXG2ANTTLib::IColumnPtr var_Column1 = ((EXG2ANTTLib::IColumnPtr)(var_Columns->Add(L"End")));
		var_Column1->PutDef(EXG2ANTTLib::exCellValueToItemBarProperty,long(2));
		var_Column1->PutDef(EXG2ANTTLib::exCellValueToItemBarKey,"");
EXG2ANTTLib::IItemsPtr var_Items = spG2antt1->GetItems();
	var_Items->PutAllowCellValueToItemBar(VARIANT_TRUE);
	var_Items->AddItem("Task A");
	var_Items->AddItem("Task A");
	var_Items->AddItem("Task A");
	var_Items->AddItem("Task A");
	var_Items->AddItem("Task B");
	var_Items->AddItem("Task B");
	var_Items->AddItem("Task B");
	var_Items->AddItem("Task C");
spG2antt1->EndUpdate();
OutputDebugStringW( _bstr_t(spG2antt1->Export("","vis")) );

2044
I want to be able to detect when a user clicks on a row in the chart that is not populated

// MouseMove event - Occurs when the user moves the mouse.
void OnMouseMoveG2antt1(short   Button,short   Shift,long   X,long   Y)
{
	/*
		Copy and paste the following directives to your header file as
		it defines the namespace 'EXG2ANTTLib' for the library: 'ExG2antt 1.0 Control Library'
		#import <ExG2antt.dll>
		using namespace EXG2ANTTLib;
	*/
	EXG2ANTTLib::IG2anttPtr spG2antt1 = GetDlgItem(IDC_G2ANTT1)->GetControlUnknown();
	long item = spG2antt1->GetItemFromPoint(-1,-1,col,hit);
	Date date = spG2antt1->GetChart()->GetDateFromPoint(-1,-1);
	_variant_t sMessage = spG2antt1->FormatABC(L"(not(A = 0) ? `chart` : `list`) + ` ` + (not(B = 0) ? `item` : `empty`)  ",date,item,vtMissing);
	OutputDebugStringW( L"sMessage" );
}

EXG2ANTTLib::IG2anttPtr spG2antt1 = GetDlgItem(IDC_G2ANTT1)->GetControlUnknown();
spG2antt1->BeginUpdate();
EXG2ANTTLib::IChartPtr var_Chart = spG2antt1->GetChart();
	var_Chart->PutPaneWidth(VARIANT_FALSE,128);
	var_Chart->PutLevelCount(2);
	var_Chart->PutFirstVisibleDate(COleDateTime(2018,1,1,0,00,00).operator DATE());
spG2antt1->GetColumns()->Add(L"Tasks");
EXG2ANTTLib::IItemsPtr var_Items = spG2antt1->GetItems();
	var_Items->AddBar(var_Items->AddItem("Task 1"),"Task",COleDateTime(2018,1,2,0,00,00).operator DATE(),COleDateTime(2018,1,12,0,00,00).operator DATE(),vtMissing,vtMissing);
	var_Items->AddBar(var_Items->AddItem("Task 2"),"Task",COleDateTime(2018,1,3,0,00,00).operator DATE(),COleDateTime(2018,1,13,0,00,00).operator DATE(),vtMissing,vtMissing);
	var_Items->AddBar(var_Items->AddItem("Task 3"),"Task",COleDateTime(2018,1,4,0,00,00).operator DATE(),COleDateTime(2018,1,14,0,00,00).operator DATE(),vtMissing,vtMissing);
spG2antt1->EndUpdate();

2043
Is it possible to have multiple calendars. A calendar for each row for example. Reason : some of our lines work 2 shifts but some also have a night shift

/*
	Copy and paste the following directives to your header file as
	it defines the namespace 'EXG2ANTTLib' for the library: 'ExG2antt 1.0 Control Library'

	#import <ExG2antt.dll>
	using namespace EXG2ANTTLib;
*/
EXG2ANTTLib::IG2anttPtr spG2antt1 = GetDlgItem(IDC_G2ANTT1)->GetControlUnknown();
spG2antt1->BeginUpdate();
spG2antt1->GetColumns()->Add(L"Tasks");
EXG2ANTTLib::IColumnPtr var_Column = ((EXG2ANTTLib::IColumnPtr)(spG2antt1->GetColumns()->Add(L"Working")));
	var_Column->PutDef(EXG2ANTTLib::exCellValueToItemBarProperty,long(258));
	var_Column->PutFormatColumn(_bstr_t("((1:=int(0:=( 24*int(value) + (value - int(value) + 1/24/60/60/2)*24))) != 0 ? =:1 + ' hour(s)' : '' ) + (=:1 ? ' ' : '' ) + ((") +
"1:=round((=:0 - =:1)*60)) != 0 ? =:1 + ' min(s)' : '')");
EXG2ANTTLib::IChartPtr var_Chart = spG2antt1->GetChart();
	var_Chart->PutFirstVisibleDate(COleDateTime(2009,4,6,0,00,00).operator DATE());
	var_Chart->PutPaneWidth(VARIANT_FALSE,148);
	var_Chart->PutLevelCount(2);
	var_Chart->PutShowNonworkingUnits(VARIANT_FALSE);
	var_Chart->PutShowNonworkingDates(VARIANT_FALSE);
	EXG2ANTTLib::IBarsPtr var_Bars = var_Chart->GetBars();
		var_Bars->Add(L"Task:Split")->PutShortcut(L"Task");
		var_Bars->GetItem("Task")->PutDef(EXG2ANTTLib::exBarKeepWorkingCount,VARIANT_TRUE);
	var_Chart->PutLabel(EXG2ANTTLib::exHour,L"<%h%><||><||>65536");
	var_Chart->GetLevel(0)->PutFormatLabel(L"`<font small fonts;6>` + value");
	var_Chart->GetLevel(1)->PutFormatLabel(_bstr_t("len(value) = 2 ? (`<font small fonts;4>` + (value left 1) + `<br>` + (value right 1) ) : (`<font small fonts;4>` + ` <br>` + (v") +
"alue left 1) + `` )");
	var_Chart->PutUnitScale(EXG2ANTTLib::exHour);
	var_Chart->PutUnitWidth(9);
spG2antt1->GetItems()->PutAllowCellValueToItemBar(VARIANT_TRUE);
EXG2ANTTLib::IItemsPtr var_Items = spG2antt1->GetItems();
	_bstr_t sCalendar1 = "weekday(value) in (0,6) or (hour(value) < 6) or (hour(value) > 18)";
	long h = var_Items->AddItem("Shift 1");
	var_Items->PutItemNonworkingUnits(h,VARIANT_FALSE,L"sCalendar1");
	var_Items->AddBar(h,"Task",COleDateTime(2009,4,6,0,00,00).operator DATE(),COleDateTime(2009,4,7,0,00,00).operator DATE(),vtMissing,vtMissing);
	h = var_Items->AddItem("Shift 1");
	var_Items->PutItemNonworkingUnits(h,VARIANT_FALSE,L"sCalendar1");
	var_Items->AddBar(h,"Task",COleDateTime(2009,4,6,0,00,00).operator DATE(),COleDateTime(2009,4,8,0,00,00).operator DATE(),vtMissing,vtMissing);
	_bstr_t sCalendar2 = "weekday(value) in (0,6) or (hour(value) < 8) or (hour(value) > 14)";
	h = var_Items->AddItem("Shift 2");
	var_Items->PutItemNonworkingUnits(h,VARIANT_FALSE,L"sCalendar2");
	var_Items->AddBar(h,"Task",COleDateTime(2009,4,6,0,00,00).operator DATE(),COleDateTime(2009,4,7,0,00,00).operator DATE(),vtMissing,vtMissing);
	h = var_Items->AddItem("Shift 2");
	var_Items->PutItemNonworkingUnits(h,VARIANT_FALSE,L"sCalendar2");
	var_Items->AddBar(h,"Task",COleDateTime(2009,4,6,0,00,00).operator DATE(),COleDateTime(2009,4,8,0,00,00).operator DATE(),vtMissing,vtMissing);
	_bstr_t sCalendar3 = "weekday(value) in (0,6) or 0 = ( hour(value) mod 3 ) ";
	h = var_Items->AddItem("Shift 3");
	var_Items->PutItemNonworkingUnits(h,VARIANT_FALSE,L"sCalendar3");
	var_Items->AddBar(h,"Task",COleDateTime(2009,4,6,0,00,00).operator DATE(),COleDateTime(2009,4,7,0,00,00).operator DATE(),vtMissing,vtMissing);
	h = var_Items->AddItem("Shift 3");
	var_Items->PutItemNonworkingUnits(h,VARIANT_FALSE,L"sCalendar3");
	var_Items->AddBar(h,"Task",COleDateTime(2009,4,6,0,00,00).operator DATE(),COleDateTime(2009,4,8,0,00,00).operator DATE(),vtMissing,vtMissing);
	_bstr_t sCalendar4 = "weekday(value) in (0,6)";
	h = var_Items->AddItem("Shift 3");
	var_Items->PutItemNonworkingUnits(h,VARIANT_FALSE,L"sCalendar4");
	var_Items->AddBar(h,"Task",COleDateTime(2009,4,6,0,00,00).operator DATE(),COleDateTime(2009,4,7,0,00,00).operator DATE(),vtMissing,vtMissing);
	h = var_Items->AddItem("Shift 3");
	var_Items->PutItemNonworkingUnits(h,VARIANT_FALSE,L"sCalendar4");
	var_Items->AddBar(h,"Task",COleDateTime(2009,4,6,0,00,00).operator DATE(),COleDateTime(2009,4,8,0,00,00).operator DATE(),vtMissing,vtMissing);
spG2antt1->EndUpdate();

2042
Is it possible to check multiple-items at once

// AddItem event - Occurs after a new Item has been inserted to Items collection.
void OnAddItemG2antt1(long   Item)
{
	/*
		Copy and paste the following directives to your header file as
		it defines the namespace 'EXG2ANTTLib' for the library: 'ExG2antt 1.0 Control Library'
		#import <ExG2antt.dll>
		using namespace EXG2ANTTLib;
	*/
	EXG2ANTTLib::IG2anttPtr spG2antt1 = GetDlgItem(IDC_G2ANTT1)->GetControlUnknown();
	_variant_t bHasParent = spG2antt1->FormatABC(L"value != 0",spG2antt1->GetItems()->GetItemParent(Item),vtMissing,vtMissing);
	EXG2ANTTLib::IItemsPtr var_Items = spG2antt1->GetItems();
		var_Items->PutCellHasCheckBox(Item,long(0),VARIANT_FALSE);
}

EXG2ANTTLib::IG2anttPtr spG2antt1 = GetDlgItem(IDC_G2ANTT1)->GetControlUnknown();
spG2antt1->BeginUpdate();
spG2antt1->PutLinesAtRoot(EXG2ANTTLib::exLinesAtRoot);
EXG2ANTTLib::IColumnPtr var_Column = ((EXG2ANTTLib::IColumnPtr)(spG2antt1->GetColumns()->Add(L"Tasks")));
	var_Column->PutDef(EXG2ANTTLib::exCellValueFormat,long(1));
	var_Column->PutFormatColumn(L"value + (%CS0 = 1 ? `<r><fgcolor=808080>(checked)` : ``)");
spG2antt1->PutHeaderVisible(EXG2ANTTLib::exHeaderVisibleExtendLevels);
spG2antt1->PutSingleSel(VARIANT_FALSE);
EXG2ANTTLib::IItemsPtr var_Items = spG2antt1->GetItems();
	long h = var_Items->AddItem("Project");
	long hChild = var_Items->InsertItem(h,vtMissing,"Task 1");
	hChild = var_Items->InsertItem(h,vtMissing,"Task 2");
	hChild = var_Items->InsertItem(h,vtMissing,"Task 3");
	var_Items->PutExpandItem(h,VARIANT_TRUE);
	var_Items->PutLockedItemCount(EXG2ANTTLib::exTop,1);
	var_Items->PutCellValue(var_Items->GetLockedItem(EXG2ANTTLib::exTop,0),long(0),"<c>Select multiple items and press the <b>SPACE</b> key");
spG2antt1->EndUpdate();

2041
How can I prevent changing the start/end colors of the bar, when ItemBar(exBarColor) property is applied

/*
	Copy and paste the following directives to your header file as
	it defines the namespace 'EXG2ANTTLib' for the library: 'ExG2antt 1.0 Control Library'

	#import <ExG2antt.dll>
	using namespace EXG2ANTTLib;
*/
EXG2ANTTLib::IG2anttPtr spG2antt1 = GetDlgItem(IDC_G2ANTT1)->GetControlUnknown();
spG2antt1->BeginUpdate();
spG2antt1->Images(_bstr_t("gBJJgBAIDAAGAAEAAQhYAf8Pf4hh0QihCJo2AEZjQAjEZFEaIEaEEaAIAkcbk0olUrlktl0vmExmUzmk1m03nE5nU7nk9n0/oFBoVDolFo1HpFJpVLplNp1PqFRqVTq") +
"lVq1XrFZrVbrldr1fsFhsVjslls1ntFptVrtltt1vuFxuVzul1u13vF5vV7vl9v1/wGBwWDwmFw2HxGJxWLxmNx0xiFdyOTh8Tf9ZymXx+QytcyNgz8r0OblWjyWds+m" +
"0ka1Vf1ta1+r1mos2xrG2xeZ0+a0W0qOx3GO4NV3WeyvD2XJ5XL5nN51aiw+lfSj0gkUkAEllHanHI5j/cHg8EZf7w8vl8j4f/qfEZeB09/vjLAB30+kZQAP/P5/H6/y" +
"NAOAEAwCjMBwFAEDwJBMDwLBYAP2/8Hv8/gAGAD8LQs9w/nhDY/oygIA=");
spG2antt1->GetVisualAppearance()->Add(1,"E:\\Exontrol\\ExButton\\sample\\EBN\\Assorted\\bhframe.ebn");
spG2antt1->GetChart()->PutPaneWidth(VARIANT_FALSE,96);
EXG2ANTTLib::IBarsPtr var_Bars = spG2antt1->GetChart()->GetBars();
	var_Bars->AddShapeCorner(long(12345),long(1));
	var_Bars->AddShapeCorner(long(999),long(2));
	var_Bars->AddShapeCorner(long(1049),long(3));
	EXG2ANTTLib::IBarPtr var_Bar = var_Bars->Add(L"T1");
		var_Bar->PutStartShape(EXG2ANTTLib::ShapeCornerEnum(0x3020 | EXG2ANTTLib::exShapeIconVBar | EXG2ANTTLib::exShapeIconRight));
		var_Bar->PutEndShape(EXG2ANTTLib::ShapeCornerEnum(0x3e0 | EXG2ANTTLib::exShapeIconLeft));
		var_Bar->PutPattern(EXG2ANTTLib::exPatternNDot);
		var_Bar->PutStartColor(RGB(0,255,0));
		var_Bar->PutColor(0x1000000);
		var_Bar->PutEndColor(RGB(255,0,0));
		var_Bar->PutDef(EXG2ANTTLib::exBarCaption,"<%=`<font ;6>  ` + %0 + ``%>");
		var_Bar->PutDef(EXG2ANTTLib::exBarHAlignCaption,long(18));
	EXG2ANTTLib::IBarPtr var_Bar1 = var_Bars->Add(L"T2");
		var_Bar1->PutStartShape(EXG2ANTTLib::ShapeCornerEnum(0x3020 | EXG2ANTTLib::exShapeIconVBar | EXG2ANTTLib::exShapeIconRight));
		var_Bar1->PutEndShape(EXG2ANTTLib::ShapeCornerEnum(0x400 | EXG2ANTTLib::exShapeIconVBar | EXG2ANTTLib::exShapeIconRight));
		var_Bar1->PutPattern(EXG2ANTTLib::exPatternNDot);
		var_Bar1->PutStartColor(-1);
		var_Bar1->PutColor(0x1000000);
		var_Bar1->PutEndColor(-1);
		var_Bar1->PutDef(EXG2ANTTLib::exBarCaption,"<%=`<font ;6>  ` + %0 + ``%>");
		var_Bar1->PutDef(EXG2ANTTLib::exBarHAlignCaption,long(18));
spG2antt1->GetChart()->PutFirstVisibleDate(COleDateTime(2001,1,1,0,00,00).operator DATE());
spG2antt1->GetColumns()->Add(L"Column");
EXG2ANTTLib::IItemsPtr var_Items = spG2antt1->GetItems();
	long h = var_Items->AddItem("Item 1");
	var_Items->AddBar(h,"T1",COleDateTime(2001,1,2,0,00,00).operator DATE(),COleDateTime(2001,1,4,0,00,00).operator DATE(),vtMissing,vtMissing);
	h = var_Items->AddItem("Item 2");
	var_Items->AddBar(h,"T1",COleDateTime(2001,1,2,0,00,00).operator DATE(),COleDateTime(2001,1,4,0,00,00).operator DATE(),vtMissing,vtMissing);
	var_Items->PutItemBar(h,"",EXG2ANTTLib::exBarColor,long(65280));
	h = var_Items->AddItem("Item 3");
	var_Items->AddBar(h,"T1",COleDateTime(2001,1,2,0,00,00).operator DATE(),COleDateTime(2001,1,4,0,00,00).operator DATE(),vtMissing,vtMissing);
	var_Items->PutItemBar(h,"",EXG2ANTTLib::exBarColor,long(255));
	h = var_Items->AddItem("Item 4");
	var_Items->AddBar(h,"T2",COleDateTime(2001,1,2,0,00,00).operator DATE(),COleDateTime(2001,1,4,0,00,00).operator DATE(),vtMissing,vtMissing);
	h = var_Items->AddItem("Item 5");
	var_Items->AddBar(h,"T2",COleDateTime(2001,1,2,0,00,00).operator DATE(),COleDateTime(2001,1,4,0,00,00).operator DATE(),vtMissing,vtMissing);
	var_Items->PutItemBar(h,"",EXG2ANTTLib::exBarColor,long(65280));
	h = var_Items->AddItem("Item 6");
	var_Items->AddBar(h,"T2",COleDateTime(2001,1,2,0,00,00).operator DATE(),COleDateTime(2001,1,4,0,00,00).operator DATE(),vtMissing,vtMissing);
	var_Items->PutItemBar(h,"",EXG2ANTTLib::exBarColor,long(255));
spG2antt1->EndUpdate();

2040
How can I get the icon from the cell when using the Items.CellImages property (icon index)

// MouseMove event - Occurs when the user moves the mouse.
void OnMouseMoveG2antt1(short   Button,short   Shift,long   X,long   Y)
{
	/*
		Copy and paste the following directives to your header file as
		it defines the namespace 'EXG2ANTTLib' for the library: 'ExG2antt 1.0 Control Library'
		#import <ExG2antt.dll>
		using namespace EXG2ANTTLib;
	*/
	EXG2ANTTLib::IG2anttPtr spG2antt1 = GetDlgItem(IDC_G2ANTT1)->GetControlUnknown();
	long i = spG2antt1->GetItemFromPoint(-1,-1,c,hit);
	OutputDebugStringW( _bstr_t(spG2antt1->FormatABC(L"( 0x44 = ( value bitand 0x44 ) ) ? ( ( (value bitand 0xFFFF0000) bitshift 16 ) array B split `,` )  : `no image`",hit,spG2antt1->GetItems()->GetCellImages(i,c),vtMissing)) );
}

EXG2ANTTLib::IG2anttPtr spG2antt1 = GetDlgItem(IDC_G2ANTT1)->GetControlUnknown();
spG2antt1->BeginUpdate();
spG2antt1->Images(_bstr_t("gBJJgBAIDAAGAAEAAQhYAf8Pf4hh0QihCJo2AEZjQAjEZFEaIEaEEaAIAkcbk0olUrlktl0vmExmUzmk1m03nE5nU7nk9n0/oFBoVDolFo1HpFJpVLplNp1PqFRqVTq") +
"lVq1XrFZrVbrldr1fsFhsVjslls1ntFptVrtltt1vuFxuVzul1u13vF5vV7vl9v1/wGBwWDwmFw2HxGJxWLxmNx0xiFdyOTh8Tf9ZymXx+QytcyNgz8r0OblWjyWds+m" +
"0ka1Vf1ta1+r1mos2xrG2xeZ0+a0W0qOx3GO4NV3WeyvD2XJ5XL5nN51aiw+lfSj0gkUkAEllHanHI5j/cHg8EZf7w8vl8j4f/qfEZeB09/vjLAB30+kZQAP/P5/H6/y" +
"NAOAEAwCjMBwFAEDwJBMDwLBYAP2/8Hv8/gAGAD8LQs9w/nhDY/oygIA=");
spG2antt1->GetChart()->PutPaneWidth(VARIANT_TRUE,0);
spG2antt1->GetColumns()->Add(L"Default");
EXG2ANTTLib::IItemsPtr var_Items = spG2antt1->GetItems();
	var_Items->PutCellImages(var_Items->AddItem("Item 1"),long(0),"3,2,1");
	var_Items->PutCellImages(var_Items->AddItem("Item 2"),long(0),"2,3");
	var_Items->PutCellImages(var_Items->AddItem("Item 3"),long(0),"2,");
spG2antt1->EndUpdate();

2039
How can I get the icon from the cell when using the Items.CellImages property (icon position within the cell)

// MouseMove event - Occurs when the user moves the mouse.
void OnMouseMoveG2antt1(short   Button,short   Shift,long   X,long   Y)
{
	/*
		Copy and paste the following directives to your header file as
		it defines the namespace 'EXG2ANTTLib' for the library: 'ExG2antt 1.0 Control Library'
		#import <ExG2antt.dll>
		using namespace EXG2ANTTLib;
	*/
	EXG2ANTTLib::IG2anttPtr spG2antt1 = GetDlgItem(IDC_G2ANTT1)->GetControlUnknown();
	long i = spG2antt1->GetItemFromPoint(-1,-1,c,hit);
	OutputDebugStringW( _bstr_t(spG2antt1->FormatABC(L"( 0x44 = ( value bitand 0x44 ) ) ? 1 + ( (value bitand 0xFFFF0000) bitshift 16 ) : `no image`",hit,vtMissing,vtMissing)) );
}

EXG2ANTTLib::IG2anttPtr spG2antt1 = GetDlgItem(IDC_G2ANTT1)->GetControlUnknown();
spG2antt1->BeginUpdate();
spG2antt1->Images(_bstr_t("gBJJgBAIDAAGAAEAAQhYAf8Pf4hh0QihCJo2AEZjQAjEZFEaIEaEEaAIAkcbk0olUrlktl0vmExmUzmk1m03nE5nU7nk9n0/oFBoVDolFo1HpFJpVLplNp1PqFRqVTq") +
"lVq1XrFZrVbrldr1fsFhsVjslls1ntFptVrtltt1vuFxuVzul1u13vF5vV7vl9v1/wGBwWDwmFw2HxGJxWLxmNx0xiFdyOTh8Tf9ZymXx+QytcyNgz8r0OblWjyWds+m" +
"0ka1Vf1ta1+r1mos2xrG2xeZ0+a0W0qOx3GO4NV3WeyvD2XJ5XL5nN51aiw+lfSj0gkUkAEllHanHI5j/cHg8EZf7w8vl8j4f/qfEZeB09/vjLAB30+kZQAP/P5/H6/y" +
"NAOAEAwCjMBwFAEDwJBMDwLBYAP2/8Hv8/gAGAD8LQs9w/nhDY/oygIA=");
spG2antt1->GetChart()->PutPaneWidth(VARIANT_TRUE,0);
spG2antt1->GetColumns()->Add(L"Default");
EXG2ANTTLib::IItemsPtr var_Items = spG2antt1->GetItems();
	var_Items->PutCellImages(var_Items->AddItem("Item 1"),long(0),"3,2,1");
	var_Items->PutCellImages(var_Items->AddItem("Item 2"),long(0),"2,3");
	var_Items->PutCellImages(var_Items->AddItem("Item 3"),long(0),"2");
spG2antt1->EndUpdate();

2038
I have an EBN bar. Now if I apply an additional color to the bar, e,g, yellow, the bar is displayed as "dark yellow", which I assume is due to the black EBN color. How can I get the more "bright yellow" color

// AddGroupItem event - Occurs after a new Group Item has been inserted to Items collection.
void OnAddGroupItemG2antt1(long   Item)
{
	/*
		Copy and paste the following directives to your header file as
		it defines the namespace 'EXG2ANTTLib' for the library: 'ExG2antt 1.0 Control Library'
		#import <ExG2antt.dll>
		using namespace EXG2ANTTLib;
	*/
	EXG2ANTTLib::IG2anttPtr spG2antt1 = GetDlgItem(IDC_G2ANTT1)->GetControlUnknown();
	EXG2ANTTLib::IItemsPtr var_Items = spG2antt1->GetItems();
		var_Items->PutItemDividerLine(Item,EXG2ANTTLib::EmptyLine);
		var_Items->AddBar(Item,"Summary",COleDateTime(2017,12,2,0,00,00).operator DATE(),COleDateTime(2017,12,2,0,00,00).operator DATE(),vtMissing,vtMissing);
		var_Items->DefineSummaryBars(Item,"",-3,"");
		long l = var_Items->GetGroupItem(Item);
		var_Items->PutCellSingleLine(Item,l,EXG2ANTTLib::exCaptionWordWrap);
		var_Items->PutCellBold(Item,l,VARIANT_TRUE);
		var_Items->PutItemBackColor(Item,RGB(190,190,190));
	spG2antt1->GetChart()->PutItemBackColor(Item,RGB(190,190,190));
}

// AddItem event - Occurs after a new Item has been inserted to Items collection.
void OnAddItemG2antt1(long   Item)
{
	EXG2ANTTLib::IG2anttPtr spG2antt1 = GetDlgItem(IDC_G2ANTT1)->GetControlUnknown();
	spG2antt1->GetItems()->AddBar(Item,"Task",COleDateTime(2017,12,4,0,00,00).operator DATE(),COleDateTime(2017,12,10,0,00,00).operator DATE(),vtMissing,vtMissing);
}

EXG2ANTTLib::IG2anttPtr spG2antt1 = GetDlgItem(IDC_G2ANTT1)->GetControlUnknown();
spG2antt1->BeginUpdate();
EXG2ANTTLib::IAppearancePtr var_Appearance = spG2antt1->GetVisualAppearance();
	var_Appearance->Add(1,_bstr_t("gBFLBCJwBAEHhEJAAEhABOUGACAADACAxRDgMQBQKAAzAJBIYhiG4cYCgMZhXDOCYXABCEYRXBIZQ7BKNIxjSJwFgmEgADCMQwAFBIbhrE4ZBjHGQRUgyI43RhHUBzV") +
"IUBxDEaTZLlEYJBgeHYhDJPcaUVDcWQHGyeZwjSgpKoWSJIU5NcggPDgEwTKCmKlTAKoSzJMyEmwWRAdVTZLSEaxierKPhyWT/XgAF4PfDFKRXFqXY5mKZJFqKOI8TxI" +
"NgxPQMGyrBqraLqKwQGrGCQKSBhUZ3dS2JR3OSlYRuQAMVgOXoDZhPWZXbDtSzPE63NgtOR5DiGWalABoeoxRa9cz3ViCJSrGTqIoINIzZLHFQbPpdAYdP6BeIjXhhZx" +
"BBuLZXmEOh9CcNoni2N4MjWVodh+DpfBeLJinsWR9AyYwVAkGBhEAFphGiRogDEGBamkFgtjcZgHiMbgehYaQhAIEIREAaQYkcQZUHIGRUGQDBOEaBAhDYDxGkMZAkCg" +
"eoagYZAYEYAYIAWGhemICIFj8WIiCiFR5gkIhogmBoKGKJx2C6C5hniMgggqYwog0UoNGMZJiDiCZRgOLY0ECUAQICA==");
	var_Appearance->PutRenderType(-268435456);
EXG2ANTTLib::IChartPtr var_Chart = spG2antt1->GetChart();
	var_Chart->PutLevelCount(2);
	var_Chart->PutFirstVisibleDate(COleDateTime(2017,12,2,0,00,00).operator DATE());
	var_Chart->PutPaneWidth(VARIANT_FALSE,342);
	EXG2ANTTLib::IBarPtr var_Bar = var_Chart->GetBars()->GetItem("Summary");
		var_Bar->PutStartShape(EXG2ANTTLib::exShapeIconEmpty);
		var_Bar->PutEndShape(EXG2ANTTLib::exShapeIconEmpty);
		var_Bar->PutShape(EXG2ANTTLib::exShapeSolid);
		var_Bar->PutColor(0x1ff0000);
		var_Bar->PutDef(EXG2ANTTLib::exBarCaption,"<%=%513%>");
		var_Bar->PutDef(EXG2ANTTLib::exBarHAlignCaption,long(18));
EXG2ANTTLib::IColumnsPtr var_Columns = spG2antt1->GetColumns();
	var_Columns->Add(L"C1");
	var_Columns->Add(L"C2");
	var_Columns->Add(L"C3");
	EXG2ANTTLib::IColumnPtr var_Column = ((EXG2ANTTLib::IColumnPtr)(var_Columns->Add(L"Pos")));
		var_Column->PutFormatColumn(L"1 pos ``");
		var_Column->PutAllowGroupBy(VARIANT_FALSE);
		var_Column->PutPosition(0);
		var_Column->PutWidth(48);
		var_Column->PutAllowSizing(VARIANT_FALSE);
spG2antt1->PutSortBarVisible(VARIANT_TRUE);
spG2antt1->PutSortBarCaption(L"Drag a <b>column</b> header here to group by that column.");
spG2antt1->PutAllowGroupBy(VARIANT_TRUE);
spG2antt1->PutHasLines(EXG2ANTTLib::exNoLine);
spG2antt1->PutLinesAtRoot(EXG2ANTTLib::exNoLinesAtRoot);
EXG2ANTTLib::IItemsPtr var_Items = spG2antt1->GetItems();
	long h = var_Items->AddItem("Item A");
	var_Items->PutCellValue(h,long(1),"SubItem A.1");
	var_Items->PutCellValue(h,long(2),"SubItem A.2");
	h = var_Items->AddItem("Item A");
	var_Items->PutCellValue(h,long(1),"SubItem A.1");
	var_Items->PutCellValue(h,long(2),"SubItem A.2");
	h = var_Items->AddItem("Item A");
	var_Items->PutCellValue(h,long(1),"SubItem A.1");
	var_Items->PutCellValue(h,long(2),"SubItem A.2");
	h = var_Items->AddItem("Item A");
	var_Items->PutCellValue(h,long(1),"SubItem A.1");
	var_Items->PutCellValue(h,long(2),"SubItem A.2");
	h = var_Items->AddItem("Item B");
	var_Items->PutCellValue(h,long(1),"SubItem B.1");
	var_Items->PutCellValue(h,long(2),"SubItem B.2");
	h = var_Items->AddItem("Item B");
	var_Items->PutCellValue(h,long(1),"SubItem B.1");
	var_Items->PutCellValue(h,long(2),"SubItem B.2");
EXG2ANTTLib::IColumnPtr var_Column1 = spG2antt1->GetColumns()->GetItem(long(0));
	var_Column1->PutSortOrder(EXG2ANTTLib::SortAscending);
spG2antt1->EndUpdate();

2037
Is it possible to change the visual appearance of the position signs when user changes the column's position by drag and drop

/*
	Copy and paste the following directives to your header file as
	it defines the namespace 'EXG2ANTTLib' for the library: 'ExG2antt 1.0 Control Library'

	#import <ExG2antt.dll>
	using namespace EXG2ANTTLib;
*/
EXG2ANTTLib::IG2anttPtr spG2antt1 = GetDlgItem(IDC_G2ANTT1)->GetControlUnknown();
spG2antt1->BeginUpdate();
spG2antt1->PutHeaderAppearance(EXG2ANTTLib::Etched);
EXG2ANTTLib::IColumnsPtr var_Columns = spG2antt1->GetColumns();
	var_Columns->Add(L"Column 1");
	var_Columns->Add(L"Column 2");
	var_Columns->Add(L"Column 3");
EXG2ANTTLib::IAppearancePtr var_Appearance = spG2antt1->GetVisualAppearance();
	var_Appearance->Add(1,_bstr_t("gBFLBCJwBAEHhEJAAEhABZEGACAADACAxRDgMQBQKAAzAJBIYhiG4cYCgMYxXDOCYXABCEYRXBIZQ7BKNIxjSJwFgmEgADKMA4SOKIZhrE4bBhGaQRUgyI43RhHUBzV") +
"IUcQvE6TZRHCQYHgkNIhDJIM7TPLkeSVJaTIRoKhJUogApQThTMgVRDEThkGoSa6soSoYTDBKybLrSLKagOT5YUDKUqSdKEZRpEq1YztWbaQoCUoqVRRVIWfbNd4JJa4" +
"aDhWpYdpeeY5R7bWLgBYVVABL7LLRsSxpHxPF6RXxaeI3GKsaS8G6ic6nPQMHj7I4NS5pUa6Rh2VYNSa8AAtETRYznOw4bTMXAjNIea5bAYIIR5HIoDzVbQcCQAHL9DB" +
"eEMIQEEISgGhMGZQmocgymoYRRCIEQ0G2HYBnEIBig4V4zCQGINnmagCECY43medZ6H2Pw/g+X5fnueh/h+R5+AKABfkMWgGgGYA4AICoCGCE5WA4CphACMgSD2IRIDI" +
"BICmEd5YGCBpRjGBgegWIYIgWdgoGIRQsiKCZiAiJZ0gGQI4jUS4LECOAiBmDJflGfg2BSY4Al4OhGkOCJ2DgFJjGGfgqgiH5Ch4RhGkqOQmEOEpkFkHQYhJRYyESAok" +
"GKHhIhKIxJEmf4VGUeRGFmF5iBkchPhYJQ5GoYIZg6Ug6GoFYmkmNhuhulRGHKGoImefh0BUZ4JmYeoemeSZ2H6HQmgoBgXDqXwUAQgI=");
	var_Appearance->Add(2,"CP:1 0 -36 0 0");
spG2antt1->PutBackground(EXG2ANTTLib::exColumnsPositionSign,0x2000000);
spG2antt1->EndUpdate();

2036
Overlaid-Types

// AddItem event - Occurs after a new Item has been inserted to Items collection.
void OnAddItemG2antt1(long   Item)
{
	/*
		Copy and paste the following directives to your header file as
		it defines the namespace 'EXG2ANTTLib' for the library: 'ExG2antt 1.0 Control Library'
		#import <ExG2antt.dll>
		using namespace EXG2ANTTLib;
	*/
	EXG2ANTTLib::IG2anttPtr spG2antt1 = GetDlgItem(IDC_G2ANTT1)->GetControlUnknown();
	EXG2ANTTLib::IItemsPtr var_Items = spG2antt1->GetItems();
		_variant_t barName = var_Items->GetItemData(Item);
		var_Items->AddBar(Item,barName,COleDateTime(2001,1,2,0,00,00).operator DATE(),COleDateTime(2001,1,4,0,00,00).operator DATE(),"A1",vtMissing);
		var_Items->AddBar(Item,barName,COleDateTime(2001,1,3,0,00,00).operator DATE(),COleDateTime(2001,1,5,0,00,00).operator DATE(),"A2",vtMissing);
		var_Items->AddBar(Item,barName,COleDateTime(2001,1,4,0,00,00).operator DATE(),COleDateTime(2001,1,7,0,00,00).operator DATE(),"A3",vtMissing);
		var_Items->AddBar(Item,barName,COleDateTime(2001,1,5,0,00,00).operator DATE(),COleDateTime(2001,1,8,0,00,00).operator DATE(),"A4",vtMissing);
}

EXG2ANTTLib::IG2anttPtr spG2antt1 = GetDlgItem(IDC_G2ANTT1)->GetControlUnknown();
spG2antt1->BeginUpdate();
spG2antt1->PutDefaultItemHeight(22);
spG2antt1->GetColumns()->Add(L"Task");
spG2antt1->PutScrollBySingleLine(VARIANT_TRUE);
spG2antt1->PutBackColorAlternate(RGB(240,240,240));
spG2antt1->PutDrawGridLines(EXG2ANTTLib::exHLines);
EXG2ANTTLib::IChartPtr var_Chart = spG2antt1->GetChart();
	var_Chart->PutDrawGridLines(EXG2ANTTLib::exHLines);
	var_Chart->PutShowNonworkingDates(VARIANT_FALSE);
	var_Chart->PutPaneWidth(VARIANT_FALSE,164);
	var_Chart->PutFirstVisibleDate(COleDateTime(2000,12,28,0,00,00).operator DATE());
	var_Chart->PutLevelCount(2);
	var_Chart->GetBars()->Copy(L"Task",L"Intersect")->PutColor(RGB(255,0,0));
	var_Chart->GetBars()->GetItem("Task")->PutOverlaidType(EXG2ANTTLib::exOverlaidBarsNone);
	EXG2ANTTLib::IBarPtr var_Bar = var_Chart->GetBars()->Copy(L"Task",L"Task-Transparent");
		var_Bar->PutOverlaidType(EXG2ANTTLib::exOverlaidBarsNone);
		var_Bar->PutDef(EXG2ANTTLib::exBarTransparent,long(50));
		var_Bar->PutPattern(EXG2ANTTLib::exPatternBox);
		var_Bar->PutColor(RGB(0,0,0));
		var_Bar->PutStartColor(RGB(80,80,255));
		var_Bar->PutEndColor(var_Bar->GetStartColor());
	var_Chart->GetBars()->Copy(L"Task",L"Task-Offset")->PutOverlaidType(EXG2ANTTLib::exOverlaidBarsOffset);
	EXG2ANTTLib::IBarPtr var_Bar1 = var_Chart->GetBars()->Copy(L"Task",L"Task-OffsetTransparent");
		var_Bar1->PutOverlaidType(EXG2ANTTLib::OverlaidBarsTypeEnum(EXG2ANTTLib::exOverlaidBarsTransparent | EXG2ANTTLib::exOverlaidBarsOffset));
		var_Bar1->PutOverlaid(EXG2ANTTLib::exOverlaidBarsTransparent,long(75));
	EXG2ANTTLib::IBarPtr var_Bar2 = var_Chart->GetBars()->Copy(L"Task",L"Task-Intersect");
		var_Bar2->PutOverlaidType(EXG2ANTTLib::exOverlaidBarsIntersect);
		var_Bar2->PutOverlaid(EXG2ANTTLib::exOverlaidBarsIntersect,"Intersect");
	var_Chart->GetBars()->Copy(L"Task",L"Task-Stack")->PutOverlaidType(EXG2ANTTLib::exOverlaidBarsStack);
	EXG2ANTTLib::IBarPtr var_Bar3 = var_Chart->GetBars()->Copy(L"Task",L"Task-StackAutoArrange");
		var_Bar3->PutOverlaidType(EXG2ANTTLib::OverlaidBarsTypeEnum(EXG2ANTTLib::exOverlaidBarsStackAutoArrange | EXG2ANTTLib::exOverlaidBarsStack));
		var_Bar3->PutColor(RGB(255,0,0));
		var_Bar3->PutOverlaidGroup(L"Task");
	EXG2ANTTLib::IBarPtr var_Bar4 = var_Chart->GetBars()->Copy(L"Task",L"Task-Cascade");
		var_Bar4->PutOverlaidType(EXG2ANTTLib::exOverlaidBarsCascade);
		var_Bar4->PutColor(RGB(255,0,0));
		var_Bar4->PutOverlaidGroup(L"Task");
	EXG2ANTTLib::IBarPtr var_Bar5 = var_Chart->GetBars()->Copy(L"Task",L"Task-Strict");
		var_Bar5->PutOverlaidType(EXG2ANTTLib::OverlaidBarsTypeEnum(EXG2ANTTLib::exOverlaidBarsStrict | EXG2ANTTLib::exOverlaidBarsStack));
		var_Bar5->PutOverlaidGroup(L"Task");
		var_Bar5->PutColor(RGB(255,0,0));
EXG2ANTTLib::IItemsPtr var_Items = spG2antt1->GetItems();
	var_Items->InsertItem(0,"Task","Overlaid-None");
	var_Items->InsertItem(0,"Task-Transparent","Overlaid-Semi-Transparent");
	var_Items->InsertItem(0,"Task-Offset","Overlaid-Offset");
	var_Items->InsertItem(0,"Task-OffsetTransparent","Overlaid-OffsetTransparent");
	var_Items->InsertItem(0,"Task-Intersect","Overlaid-Intersect");
	var_Items->InsertItem(0,"Task-Stack","Overlaid-Stack");
	long h = var_Items->InsertItem(0,"Task-StackAutoArrange","Overlaid-StackAutoArrange");
	var_Items->AddBar(h,"Task",COleDateTime(2001,1,7,0,00,00).operator DATE(),COleDateTime(2001,1,9,0,00,00).operator DATE(),"T1",vtMissing);
	var_Items->AddBar(h,"Task",COleDateTime(2001,1,3,0,00,00).operator DATE(),COleDateTime(2001,1,5,0,00,00).operator DATE(),"T2",vtMissing);
	var_Items->AddBar(h,"Task",COleDateTime(2001,1,4,0,00,00).operator DATE(),COleDateTime(2001,1,7,0,00,00).operator DATE(),"T3",vtMissing);
	var_Items->AddBar(h,"Task",COleDateTime(2001,1,5,0,00,00).operator DATE(),COleDateTime(2001,1,8,0,00,00).operator DATE(),"T4",vtMissing);
	h = var_Items->InsertItem(0,"Task-Cascade","Overlaid-Cascade");
	var_Items->AddBar(h,"Task",COleDateTime(2001,1,7,0,00,00).operator DATE(),COleDateTime(2001,1,9,0,00,00).operator DATE(),"T1",vtMissing);
	var_Items->AddBar(h,"Task",COleDateTime(2001,1,3,0,00,00).operator DATE(),COleDateTime(2001,1,5,0,00,00).operator DATE(),"T2",vtMissing);
	var_Items->AddBar(h,"Task",COleDateTime(2001,1,4,0,00,00).operator DATE(),COleDateTime(2001,1,7,0,00,00).operator DATE(),"T3",vtMissing);
	var_Items->AddBar(h,"Task",COleDateTime(2001,1,5,0,00,00).operator DATE(),COleDateTime(2001,1,8,0,00,00).operator DATE(),"T4",vtMissing);
	var_Items->PutItemBar(h,"<A*>",EXG2ANTTLib::exBarOverlaidKey,"A");
	var_Items->PutItemBar(h,"<T*>",EXG2ANTTLib::exBarOverlaidKey,"T");
	h = var_Items->InsertItem(0,"Task","Overlaid-StackStrict");
	var_Items->AddBar(h,"Task-Strict",COleDateTime(2001,1,7,0,00,00).operator DATE(),COleDateTime(2001,1,9,0,00,00).operator DATE(),"T1",vtMissing);
	var_Items->PutItemBar(0,"<*>",EXG2ANTTLib::exBarCaption,"<%=%9%>");
spG2antt1->EndUpdate();

2035
FilterBarCaption ALLUI Keyword ( sample 3, result, leaf )

// AddGroupItem event - Occurs after a new Group Item has been inserted to Items collection.
void OnAddGroupItemG2antt1(long   Item)
{
	/*
		Copy and paste the following directives to your header file as
		it defines the namespace 'EXG2ANTTLib' for the library: 'ExG2antt 1.0 Control Library'
		#import <ExG2antt.dll>
		using namespace EXG2ANTTLib;
	*/
	EXG2ANTTLib::IG2anttPtr spG2antt1 = GetDlgItem(IDC_G2ANTT1)->GetControlUnknown();
	EXG2ANTTLib::IItemsPtr var_Items = spG2antt1->GetItems();
		var_Items->PutItemBackColor(Item,RGB(240,240,240));
		_variant_t val = var_Items->GetCellValue(Item,var_Items->GetGroupItem(Item));
		var_Items->PutCellState(Item,var_Items->GetGroupItem(Item),spG2antt1->FormatABC(L"A = `Checked` ? 1 : 0",val,vtMissing,vtMissing));
	EXG2ANTTLib::IItemsPtr var_Items1 = spG2antt1->GetItems();
		var_Items1->PutItemDividerLine(Item,EXG2ANTTLib::EmptyLine);
		var_Items1->AddBar(Item,"Summary",COleDateTime(2017,12,2,0,00,00).operator DATE(),COleDateTime(2017,12,2,0,00,00).operator DATE(),vtMissing,vtMissing);
		var_Items1->DefineSummaryBars(Item,"",-3,"");
		long l = var_Items1->GetGroupItem(Item);
		var_Items1->PutCellSingleLine(Item,l,EXG2ANTTLib::exCaptionWordWrap);
		var_Items1->PutCellBold(Item,l,VARIANT_TRUE);
	spG2antt1->GetChart()->PutItemBackColor(Item,RGB(240,240,240));
}

// AddItem event - Occurs after a new Item has been inserted to Items collection.
void OnAddItemG2antt1(long   Item)
{
	EXG2ANTTLib::IG2anttPtr spG2antt1 = GetDlgItem(IDC_G2ANTT1)->GetControlUnknown();
	_variant_t i = spG2antt1->FormatABC(L"value + 1",spG2antt1->GetItems()->GetItemToIndex(Item),vtMissing,vtMissing);
	spG2antt1->GetItems()->PutCellImage(Item,long(3),i);
	spG2antt1->GetItems()->AddBar(Item,"Task",COleDateTime(2017,12,4,0,00,00).operator DATE(),COleDateTime(2017,12,14,0,00,00).operator DATE(),vtMissing,vtMissing);
}

EXG2ANTTLib::IG2anttPtr spG2antt1 = GetDlgItem(IDC_G2ANTT1)->GetControlUnknown();
spG2antt1->BeginUpdate();
spG2antt1->GetVisualAppearance()->Add(1,_bstr_t("gBFLBCJwBAEHhEJAAEhABOUGACAADACAxRDgMQBQKAAzAJBIYhiG4cYCgMZhXDOCYXABCEYRXBIZQ7BKNIxjSJwFgmEgADCMQwAFBIbhrE4ZBjHGQRUgyI43RhHUBzV") +
"IUBxDEaTZLlEYJBgeHYhDJPcaUVDcWQHGyeZwjSgpKoWSJIU5NcggPDgEwTKCmKlTAKoSzJMyEmwWRAdVTZLSEaxierKPhyWT/XgAF4PfDFKRXFqXY5mKZJFqKOI8TxI" +
"NgxPQMGyrBqraLqKwQGrGCQKSBhUZ3dS2JR3OSlYRuQAMVgOXoDZhPWZXbDtSzPE63NgtOR5DiGWalABoeoxRa9cz3ViCJSrGTqIoINIzZLHFQbPpdAYdP6BeIjXhhZx" +
"BBuLZXmEOh9CcNoni2N4MjWVodh+DpfBeLJinsWR9AyYwVAkGBhEAFphGiRogDEGBamkFgtjcZgHiMbgehYaQhAIEIREAaQYkcQZUHIGRUGQDBOEaBAhDYDxGkMZAkCg" +
"eoagYZAYEYAYIAWGhemICIFj8WIiCiFR5gkIhogmBoKGKJx2C6C5hniMgggqYwog0UoNGMZJiDiCZRgOLY0ECUAQICA==");
EXG2ANTTLib::IChartPtr var_Chart = spG2antt1->GetChart();
	var_Chart->PutLevelCount(2);
	var_Chart->PutFirstVisibleDate(COleDateTime(2017,12,2,0,00,00).operator DATE());
	var_Chart->PutPaneWidth(VARIANT_FALSE,256);
	EXG2ANTTLib::IBarPtr var_Bar = var_Chart->GetBars()->GetItem("Summary");
		var_Bar->PutStartShape(EXG2ANTTLib::exShapeIconEmpty);
		var_Bar->PutEndShape(EXG2ANTTLib::exShapeIconEmpty);
		var_Bar->PutShape(EXG2ANTTLib::exShapeSolid);
		var_Bar->PutColor(0x1000000);
		var_Bar->PutDef(EXG2ANTTLib::exBarCaption,"<%=%513%>");
		var_Bar->PutDef(EXG2ANTTLib::exBarHAlignCaption,long(18));
spG2antt1->Images(_bstr_t("gBJJgBAIDAAGAAEAAQhYAf8Pf4hh0QihCJo2AEZjQAjEZFEaIEaEEaAIAkcbk0olUrlktl0vmExmUzmk1m03nE5nU7nk9n0/oFBoVDolFo1HpFJpVLplNp1PqFRqVTq") +
"lVq1XrFZrVbrldr1fsFhsVjslls1ntFptVrtltt1vuFxuVzul1u13vF5vV7vl9v1/wGBwWDwmFw2HxGJxWLxmNx0xiFdyOTh8Tf9ZymXx+QytcyNgz8r0OblWjyWds+m" +
"0ka1Vf1ta1+r1mos2xrG2xeZ0+a0W0qOx3GO4NV3WeyvD2XJ5XL5nN51aiw+lfSj0gkUkAEllHanHI5j/cHg8EZf7w8vl8j4f/qfEZeB09/vjLAB30+kZQAP/P5/H6/y" +
"NAOAEAwCjMBwFAEDwJBMDwLBYAP2/8Hv8/gAGAD8LQs9w/nhDY/oygIA=");
EXG2ANTTLib::IColumnPtr var_Column = ((EXG2ANTTLib::IColumnPtr)(spG2antt1->GetColumns()->Add(L"Col-1")));
	var_Column->PutDisplayFilterButton(VARIANT_TRUE);
	var_Column->PutFilterList(EXG2ANTTLib::FilterListEnum(EXG2ANTTLib::exShowExclude | EXG2ANTTLib::exShowFocusItem | EXG2ANTTLib::exShowCheckBox | EXG2ANTTLib::exSortItemsAsc));
EXG2ANTTLib::IColumnPtr var_Column1 = ((EXG2ANTTLib::IColumnPtr)(spG2antt1->GetColumns()->Add(L"Col-2")));
	var_Column1->PutDisplayFilterButton(VARIANT_TRUE);
	var_Column1->PutFilterList(EXG2ANTTLib::FilterListEnum(EXG2ANTTLib::exShowExclude | EXG2ANTTLib::exShowFocusItem | EXG2ANTTLib::exShowCheckBox | EXG2ANTTLib::exSortItemsAsc));
EXG2ANTTLib::IColumnPtr var_Column2 = ((EXG2ANTTLib::IColumnPtr)(spG2antt1->GetColumns()->Add(L"Check")));
	var_Column2->PutDef(EXG2ANTTLib::exCellHasCheckBox,VARIANT_TRUE);
	var_Column2->PutDisplayFilterButton(VARIANT_TRUE);
	var_Column2->PutDisplayFilterPattern(VARIANT_FALSE);
	var_Column2->PutFilterType(EXG2ANTTLib::exCheck);
EXG2ANTTLib::IColumnPtr var_Column3 = ((EXG2ANTTLib::IColumnPtr)(spG2antt1->GetColumns()->Add(L"Image")));
	var_Column3->PutDisplayFilterButton(VARIANT_TRUE);
	var_Column3->PutFilterType(EXG2ANTTLib::exImage);
	var_Column3->PutFilterList(EXG2ANTTLib::FilterListEnum(EXG2ANTTLib::exShowExclude | EXG2ANTTLib::exShowFocusItem | EXG2ANTTLib::exShowCheckBox));
EXG2ANTTLib::IColumnPtr var_Column4 = ((EXG2ANTTLib::IColumnPtr)(spG2antt1->GetColumns()->Add(L"Pos")));
	var_Column4->PutAllowSizing(VARIANT_FALSE);
	var_Column4->PutAllowSort(VARIANT_FALSE);
	var_Column4->PutWidth(32);
	var_Column4->PutFormatColumn(L"1 rpos ``");
	var_Column4->PutPosition(0);
EXG2ANTTLib::IItemsPtr var_Items = spG2antt1->GetItems();
	var_Items->PutCellValue(var_Items->AddItem("Item A"),long(1),"Sub-Item A");
	long h = var_Items->AddItem("Item B");
	var_Items->PutCellValue(h,long(1),"Sub-Item B");
	var_Items->PutCellState(h,long(2),1);
	var_Items->PutCellValue(var_Items->AddItem("Item C"),long(1),"Sub-Item C");
/*
	Copy and paste the following directives to your header file as
	it defines the namespace 'stdole' for the library: 'OLE Automation'

	#import <stdole2.tlb>
*/
spG2antt1->PutFilterBarFont(IFontDispPtr(((stdole::FontPtr)(spG2antt1->GetFont()))));
spG2antt1->PutDescription(EXG2ANTTLib::exFilterBarAnd,_bstr_t(spG2antt1->FormatABC(L"`<fgcolor=808080> ` + value + ` </fgcolor>`",spG2antt1->GetDescription(EXG2ANTTLib::exFilterBarAnd),vtMissing,vtMissing)));
spG2antt1->PutFilterBarCaption(_bstr_t("(( ( allui replace `[<b>` with `<bgcolor=000000><fgcolor=FFFFFF><b> ` replace `</b>]` with ` </b></bgcolor></fgcolor>` replace ") +
"`[<s>` with `<bgcolor=C0C0C0><fgcolor=FFFFFF> ` replace `</s>]` with ` </fgcolor></bgcolor>` )  + `<r><fgcolor=808080>` + ( matc" +
"hitemcount < 0 ? ( ( len(value) ? `` : `` ) + `<r>` + leafitemcount + ` result(s)` ) : (`<r><fgcolor=808080>`+ leafitemcount + `" +
" item(s)`) )))");
spG2antt1->PutFilterBarPromptVisible(EXG2ANTTLib::FilterBarVisibleEnum(EXG2ANTTLib::exFilterBarVisible | EXG2ANTTLib::exFilterBarPromptVisible));
spG2antt1->PutAllowGroupBy(VARIANT_TRUE);
spG2antt1->PutSortBarVisible(VARIANT_TRUE);
EXG2ANTTLib::IColumnPtr var_Column5 = spG2antt1->GetColumns()->GetItem(long(2));
	var_Column5->PutFormatColumn(L"%CS2 ? `Checked` : `Unchecked`");
	var_Column5->PutSortOrder(EXG2ANTTLib::SortAscending);
spG2antt1->EndUpdate();

2034
A black portion is shown while I am using the BackColorAlternate with EBN colors. What can I do

/*
	Copy and paste the following directives to your header file as
	it defines the namespace 'EXG2ANTTLib' for the library: 'ExG2antt 1.0 Control Library'

	#import <ExG2antt.dll>
	using namespace EXG2ANTTLib;
*/
EXG2ANTTLib::IG2anttPtr spG2antt1 = GetDlgItem(IDC_G2ANTT1)->GetControlUnknown();
spG2antt1->BeginUpdate();
spG2antt1->PutColumnAutoResize(VARIANT_TRUE);
spG2antt1->PutDefaultItemHeight(20);
spG2antt1->GetVisualAppearance()->Add(1,_bstr_t("gBFLBCJwBAEHhEJAAEhIDhAxHAxg0HG0Mg4xGI3HMOig3GcJiYAf8jAEhhUnAAyhEqg8hk0oAsIjgAiAwmYxGA4mYzGwwkI0i0ooUnB0IBMIl1Dg8zmYyGolptPkI1m") +
"Y1GAll9KoUslNIrVCqNQldShFUstXAVfrVcrlZtVhuFnsUHq1zoczoQGhFBkNpg6zbDykUkhsPHE2h85nc9n8xtVDtlex9Msd2p1YstVq9ux8HyMtzuFz1PsNTzQlv2h" +
"hWfkuqpeVuN0q+nvEooN5veSAGpkb/ACcZrvhU3w83nM/poxGuchGpoVBvWgg+8knA4WimnFxI45Er5XOlHMg/Q3XU33W4ew9Wyu11mchDagcO7zus8VDoNBBEIKBpMY" +
"6DqOQyokhA/IQIQmwMk4bIQFDcoO6LWgwhQkNcABwEyAB5GwWbet6cRQg3DENQ5D8QxADZvEkAB8nabsURGeBpFM3pwE2AEZRpDx/neZpOR3Dz9oO/r/wCMoZNTBQAQR" +
"JSEwYg8HPGhEIoNCaEwq10gQ2WcRt7LcRxRFpuxUAEURQ3sczBEMgTTG8gN7HpOSEAEiQBAQZpmQ0DibPUFwbKcHwkhQoQtNQNzNEMbABOKDy/DMYQzHLeoPL0OTJSUd" +
"0pHcxTewk5zrIygIRPslz4lEngBKIAQivgASs/kLSBTlO00f8t0vGcgUbDlDRjXLCUNRERRvRgAHW2oAICA==");
EXG2ANTTLib::IColumnPtr var_Column = ((EXG2ANTTLib::IColumnPtr)(spG2antt1->GetColumns()->Add(L"Default")));
	var_Column->PutDef(EXG2ANTTLib::exCellHasCheckBox,VARIANT_TRUE);
	var_Column->PutPartialCheck(VARIANT_TRUE);
EXG2ANTTLib::IColumnPtr var_Column1 = ((EXG2ANTTLib::IColumnPtr)(spG2antt1->GetColumns()->Add(L"Position")));
	var_Column1->PutFormatColumn(L"1 rindex ``");
	var_Column1->PutVisible(VARIANT_FALSE);
EXG2ANTTLib::IConditionalFormatPtr var_ConditionalFormat = spG2antt1->GetConditionalFormats()->Add(L"%C1 mod 2",vtMissing);
	var_ConditionalFormat->PutBackColor(0x1000000);
EXG2ANTTLib::IItemsPtr var_Items = spG2antt1->GetItems();
	var_Items->AddItem("Item 1");
	var_Items->AddItem("Item 2");
	var_Items->AddItem("Item 3");
	var_Items->AddItem("Item 4");
spG2antt1->EndUpdate();

2033
How can I specify alternate background colors for each root item, similar with BackColorAlternate

/*
	Copy and paste the following directives to your header file as
	it defines the namespace 'EXG2ANTTLib' for the library: 'ExG2antt 1.0 Control Library'

	#import <ExG2antt.dll>
	using namespace EXG2ANTTLib;
*/
EXG2ANTTLib::IG2anttPtr spG2antt1 = GetDlgItem(IDC_G2ANTT1)->GetControlUnknown();
spG2antt1->BeginUpdate();
spG2antt1->PutLinesAtRoot(EXG2ANTTLib::exLinesAtRoot);
EXG2ANTTLib::IColumnPtr var_Column = ((EXG2ANTTLib::IColumnPtr)(spG2antt1->GetColumns()->Add(L"Default")));
	var_Column->PutDef(EXG2ANTTLib::exCellHasCheckBox,VARIANT_TRUE);
	var_Column->PutPartialCheck(VARIANT_TRUE);
EXG2ANTTLib::IColumnPtr var_Column1 = ((EXG2ANTTLib::IColumnPtr)(spG2antt1->GetColumns()->Add(L"Position")));
	var_Column1->PutFormatColumn(L"( ( 1:=( ( 0:=(1 rpos '') ) lfind `.`) ) < 0 ? =:0 : (=:0 left =:1) )");
	var_Column1->PutVisible(VARIANT_FALSE);
EXG2ANTTLib::IConditionalFormatPtr var_ConditionalFormat = spG2antt1->GetConditionalFormats()->Add(L"%C1 mod 2",vtMissing);
	var_ConditionalFormat->PutBackColor(RGB(240,240,240));
EXG2ANTTLib::IItemsPtr var_Items = spG2antt1->GetItems();
	long h = var_Items->AddItem("Root 1");
	var_Items->InsertItem(h,vtMissing,"Child 1");
	var_Items->InsertItem(h,vtMissing,"Child 2");
	var_Items->PutExpandItem(h,VARIANT_TRUE);
	h = var_Items->AddItem("Root 2");
	var_Items->InsertItem(h,vtMissing,"Child 1");
	var_Items->InsertItem(h,vtMissing,"Child 2");
	h = var_Items->AddItem("Root 3");
	var_Items->InsertItem(h,vtMissing,"Child 1");
	var_Items->InsertItem(h,vtMissing,"Child 2");
spG2antt1->EndUpdate();

2032
How can I change the visual appearance of the +/- buttons, open/close glyphs as current visual theme (method 4)

/*
	Copy and paste the following directives to your header file as
	it defines the namespace 'EXG2ANTTLib' for the library: 'ExG2antt 1.0 Control Library'

	#import <ExG2antt.dll>
	using namespace EXG2ANTTLib;
*/
EXG2ANTTLib::IG2anttPtr spG2antt1 = GetDlgItem(IDC_G2ANTT1)->GetControlUnknown();
spG2antt1->BeginUpdate();
spG2antt1->PutLinesAtRoot(EXG2ANTTLib::exLinesAtRoot);
spG2antt1->PutVisualDesign(_bstr_t("gBFLBWIgBAEHhEJAEGg6VAkHeLpgwChAOhULB8XAUUg8MAAREEHGMcgRCJ0ei8dhABDEcQAAYAQGKIYBkAKBQAGaAoDDMOQwQwAAxjGKEEwsACEIrjKCRShyCYZRhGc") +
"TSBCIZBqEqSZLiEZRQiiCYsS5GQBRWAkEwiBiEQTjea5CgOIAFS7LIqjRQEBxhIaZYIGaiQADENo9TxIMZAfBIHShK6NJABCCSQKkYx0HScRijDIEFwGIQmbKiej4DCi" +
"CQQW7OYYRVCNMQSfa8HivJyrcamfp/YBgOBYHb1eLVPR5LwfPCGUw1P6PLxkORZHimK4tSLHV7xVpMIwZFafIQhCCoHomS5NU7UNR0TQUFx9FaGX7rDDsGwLAJ6XRgF4" +
"bg2VpnHePpenAN4bH2GwHFmApSjEGBLnWOpRGOTBZHOegrE6BxPiWVJqCweQrn0LgJAWJBjwgaw1gKO5HmWch5h+fovF+G5bmich4BgfZkB8dynRUVYqiUR5rnmex/F6" +
"N4tn2AJfnebZ3DEXw3HWXgzAyIwgicKJKBKEIhCeCgiHyHYFEmSAFmqBghFIdgSCeIJygYDAyAgJx6AoIINAMOJNCgCZCGoGoLmMCI+CwJoihMNglCCIhzFCUg0EmMhg" +
"hWDBkAiQg9CUY4jEYN4Jk2IxklYJoJHIUg+CSZJSESFwkkkGI+FOFIJEIRhPhMCRJCSVoRrSBhiDgTZjHYT4PEkYhwhgJYm0SaIaiaSYuE+GQNlmCIBGCJxjhiZQ5AkM" +
"hAg6ExJCkPhPguaAiFYUAlAkKZ0g6HoOEmWR/GHcA4m0OwIlIJIHCRgQshGJhpjoaocieaZiC6GAimkUgehIOwnGYGYIGkah6jaE4rg6SpCjKK5rEOMYlGIGIihKOggl" +
"oFoqj6L5aGaBo6CkGIkAQjiPpCAAaJILCTJQlKPACDaXJgmSaJsnCdJ4nygKEoijKQpSmKcqCpKoqysK0rivLAsSyLMtC1LYty4Lkui7LwvS+L8wDBMIwzEMUxjHMgyT" +
"KMszDNM4zzQNE0jTNQ1TWNc2DZNo2zcN03jfOA4TiOM5DlOY5zoOk6jrOw7TuO88DxPI8z0PU9j3Pg+T6Ps/D9P4/0AQFAkDQRBUGQdCEJQpC0MQ1DkPRBEUSRNFEVBh" +
"FkXRhGQ9D6Dxfh+W5gGGd4QH2XQjCmDpFFaKoVB+D5Xmed5+H8YAHnIAh9EwV5Fl0d4MkMKJICmSgygSJAoEmMUCIPgnDCCIOQFYCxJjwFoCcA4kxoF+AIJkAgExegDE" +
"gEYQInAzCUAIOEGgfxiiRDYF1Q4EQ2BSCaEQYwbAiKREMpRSymFNDIAkAxT6oVRgSA2qdVKq1WqvVirMZQUhSCnBUMoIgoQRgnGSIQUgkg1hIHYAkAYMROAmHiLsE4xx" +
"SCxBwEwCQ0wmDdBsE0GYXBtg2CSPMFIuwYiQBYBQeAcwOCnBCCZgw0g0glBONAQgqQThCGgPQGoBQfiRGmOEZIPAXjsBoPAO4HRThhA0EQSA5BAgaCKJIGg3QdhOCmNU" +
"BoQAijTCIF0FwQxpCHDIPAYYMQGgtCmFcaQtRAjZCyFYSojQ2B2BoKwIYFApBXEIBsIQ1QsAWAWEwaA1xCgjAoIAQBAQ=");
spG2antt1->GetColumns()->Add(L"Column");
EXG2ANTTLib::IItemsPtr var_Items = spG2antt1->GetItems();
	long h = var_Items->AddItem("Root 1");
	var_Items->InsertItem(h,vtMissing,"Child 1");
	var_Items->InsertItem(h,vtMissing,"Child 2");
	var_Items->PutExpandItem(h,VARIANT_TRUE);
	h = var_Items->AddItem("Root 2");
	var_Items->InsertItem(h,vtMissing,"Child");
spG2antt1->EndUpdate();

2031
How can I change the visual appearance of the +/- buttons, open/close glyphs as current visual theme (method 3)

/*
	Copy and paste the following directives to your header file as
	it defines the namespace 'EXG2ANTTLib' for the library: 'ExG2antt 1.0 Control Library'

	#import <ExG2antt.dll>
	using namespace EXG2ANTTLib;
*/
EXG2ANTTLib::IG2anttPtr spG2antt1 = GetDlgItem(IDC_G2ANTT1)->GetControlUnknown();
spG2antt1->BeginUpdate();
EXG2ANTTLib::IAppearancePtr var_Appearance = spG2antt1->GetVisualAppearance();
	var_Appearance->Add(3,_bstr_t("gBFLBCJwBAEHhEJAAEhABDwCg6AADACAxRDgMQBQKAAzAJBIYhiG4cYCgMZhXDOCYXABCEYRXBIZQ7BKNIxjSJ5BhIAAyDSJMjSRJUEhqGCWYDleYYYAKHIMQLJQKQS") +
"BcQR9EaBZBAWTpQC0OJDTJRI4TNAgbSYAAYRqoCb6loTKypaxjCQQIgkUBpGKdBynEYsDwSGyJCCJWyIbpKAwoVbcs4AYhuJpaQi+d5PFbjVT8dLAMBwLA8EwXAJ+Opf" +
"DxXU7eFKpR5fchXTI8UxXFqXZhkeQrfh7KYVRBKdBQRBEFQPJqnahqOpaXo2RoLUJKcQwHTmHYNQTALyuTALZrWeZ3XrgN74LbtZzVQauYRpbCMEr6bpoWLnFi6Ho1U4" +
"llWah1jqSweFqfxPgQQRphi+Yak0YIuqUfJegef4zluaJ3nqPJeCYH4BAeX5TDLBpVGqKRRnwf4flefZtHsX54BYAR/F+EwVnUd5eAMMJKDIChygyIQpAoEh4iIJ5Jlg" +
"XIcgCXpIGoFwnGEQh6BEKBgmMIICHgIJCAiUAzgyUoAhwJohkiRgygwYpiGoKwzGIcgKCkNQNCMRIbCYCRYk4QoMiOchWDwNBjhiJJaDYTRiGiFwlCQAhOE8JBJHITIR" +
"gwZRZFCFCZBkOIUhKTRpCWAwgGYQ4El4NxlBifIWCcCYCFoaoMGaKYyG6GxlBmGJdhkCAWBIeA5g4U4QhMJAImkPIShRVxGgQJRlCIUISh+SJpnCZIeBgFgiHgO4OlOM" +
"INCISByECDQikkGhuh2JwpmqBogCKaYiC6FwhmkQ4yHgYgYiaHopiuaRakCbIsisSpGjYOwaHYKYMCkK5CA2IxrCwCwFigaJrkLTI6lcdANAEgIA=");
	var_Appearance->Add(1,"CP:3 -2 -2 2 2");
	var_Appearance->Add(4,_bstr_t("gBFLBCJwBAEHhEJAAEhABEICg6AADACAxRDgMQBQKAAzAJBIYhiG4cYCgMZhXDOCYXABCEYRXBIZQ7BKNIxjSJ5BhIAAyDSJMjSRJUEhqGCWYDleYYYAKHIMQLJQKQS") +
"BcQR9EaBZBAWTpQC0OJDTJRI4TNAgbSYAAYRqoCb6loTKypaxjCQQIgkUBpGKdBynEYsDwSGyJCCJWyIbpKAwoVbcs4AYhuJpaQi+d5PFbjVT8dLAMBwLA8EwXAJ+Opf" +
"DxXU7eFKpR5fchXTI8UxXFqXZhkeQrfh7KYVRBKdBQRBEFQPJqnahqOpaXo2RoLUJKcQwHTmHYNQTALyuTALZrWeZ3XrgN74LbtZzVQauYRpbCMEr6bpoWLnFi6Ho1U4" +
"llWah1jqSweFqfxPgQQRphi+Yak0YIuqUfJeg8X4rluaZ3niGB+AQHx/EyShjjEVYqiUR5rnmex/GAB5+AIf4gEeXJFHyXZ3gCTAygyAociMKBKEKBIeCiCZyHYFAnCE" +
"eBkh+BghFgRIegOCgYCySAgh4CAkgINAMmMNIgCcCYjn4LoLmMCJGDKC5ijIagoDMYhCAoJg1A0IxEhsJgJFiThChCY5yFYPA0GOGIYloNhNGIaIXCUJACE4TwkEkchO" +
"FSFYlFkXhUCUCQZEYTglCSMxaEkYJIBmFJhDeDZZEYPwlgmQhghaGqVDoa4bGaeY6FGGZNlmFIBGEJ4jhiZQ5AkMhAg6E5JCkRoGCUSQ6B6CYiSCBIOh+DhJmmARiWQO" +
"JtDsCJSCSBwkXSLIRicaZ6HqIIomoIguhwIpphIHoWDsJ4mCGChpmqOpGheLIOkqUo2iya4DjGJxihiQoSj4IJaDaMpCjCWoGg6PgpBiQ4tHcQJQBAgI=");
	var_Appearance->Add(2,"CP:4 -2 -2 2 2");
spG2antt1->PutLinesAtRoot(EXG2ANTTLib::exGroupLinesAtRoot);
spG2antt1->PutHasButtons(EXG2ANTTLib::exCustom);
spG2antt1->PutHasButtonsCustom(VARIANT_FALSE,16777216);
spG2antt1->PutHasButtonsCustom(VARIANT_TRUE,33554432);
spG2antt1->GetColumns()->Add(L"Column");
EXG2ANTTLib::IItemsPtr var_Items = spG2antt1->GetItems();
	long h = var_Items->AddItem("Root 1");
	var_Items->InsertItem(h,vtMissing,"Child 1");
	var_Items->InsertItem(h,vtMissing,"Child 2");
	var_Items->PutExpandItem(h,VARIANT_TRUE);
	h = var_Items->AddItem("Root 2");
	var_Items->InsertItem(h,vtMissing,"Child");
spG2antt1->EndUpdate();

2030
How can I change the visual appearance of the +/- buttons, open/close glyphs as current visual theme (method 2)

/*
	Copy and paste the following directives to your header file as
	it defines the namespace 'EXG2ANTTLib' for the library: 'ExG2antt 1.0 Control Library'

	#import <ExG2antt.dll>
	using namespace EXG2ANTTLib;
*/
EXG2ANTTLib::IG2anttPtr spG2antt1 = GetDlgItem(IDC_G2ANTT1)->GetControlUnknown();
spG2antt1->BeginUpdate();
EXG2ANTTLib::IAppearancePtr var_Appearance = spG2antt1->GetVisualAppearance();
	var_Appearance->Add(1,"XP:TREEVIEW 2 1");
	var_Appearance->Add(2,"XP:TREEVIEW 2 2");
spG2antt1->PutBackground(EXG2ANTTLib::exTreeGlyphOpen,0x1000000);
spG2antt1->PutBackground(EXG2ANTTLib::exTreeGlyphClose,0x2000000);
spG2antt1->PutLinesAtRoot(EXG2ANTTLib::exLinesAtRoot);
spG2antt1->GetColumns()->Add(L"Column");
EXG2ANTTLib::IItemsPtr var_Items = spG2antt1->GetItems();
	long h = var_Items->AddItem("Root 1");
	var_Items->InsertItem(h,vtMissing,"Child 1");
	var_Items->InsertItem(h,vtMissing,"Child 2");
	var_Items->PutExpandItem(h,VARIANT_TRUE);
	h = var_Items->AddItem("Root 2");
	var_Items->InsertItem(h,vtMissing,"Child");
spG2antt1->EndUpdate();

2029
How can I find if the control is running in DPI mode
/*
	Copy and paste the following directives to your header file as
	it defines the namespace 'EXG2ANTTLib' for the library: 'ExG2antt 1.0 Control Library'

	#import <ExG2antt.dll>
	using namespace EXG2ANTTLib;
*/
EXG2ANTTLib::IG2anttPtr spG2antt1 = GetDlgItem(IDC_G2ANTT1)->GetControlUnknown();
OutputDebugStringW( _bstr_t(spG2antt1->FormatABC(L"dpi = 1 ? `normal/stretch mode` : `dpi mode`",vtMissing,vtMissing,vtMissing)) );

2028
How can I change the visual appearance of the +/- buttons (method 1)

/*
	Copy and paste the following directives to your header file as
	it defines the namespace 'EXG2ANTTLib' for the library: 'ExG2antt 1.0 Control Library'

	#import <ExG2antt.dll>
	using namespace EXG2ANTTLib;
*/
EXG2ANTTLib::IG2anttPtr spG2antt1 = GetDlgItem(IDC_G2ANTT1)->GetControlUnknown();
spG2antt1->BeginUpdate();
EXG2ANTTLib::IAppearancePtr var_Appearance = spG2antt1->GetVisualAppearance();
	var_Appearance->Add(1,_bstr_t("gBFLBCJwBAEHhEJAAEhABDwCg6AADACAxRDgMQBQKAAzAJBIYhiG4cYCgMZhXDOCYXABCEYRXBIZQ7BKNIxjSJ5BhIAAyDSJMjSRJUEhqGCWYDleYYYAKHIMQLJQKQS") +
"BcQR9EaBZBAWTpQC0OJDTJRI4TNAgbSYAAYRqoCb6loTKypaxjCQQIgkUBpGKdBynEYsDwSGyJCCJWyIbpKAwoVbcs4AYhuJpaQi+d5PFbjVT8dLAMBwLA8EwXAJ+Opf" +
"DxXU7eFKpR5fchXTI8UxXFqXZhkeQrfh7KYVRBKdBQRBEFQPJqnahqOpaXo2RoLUJKcQwHTmHYNQTALyuTALZrWeZ3XrgN74LbtZzVQauYRpbCMEr6bpoWLnFi6Ho1U4" +
"llWah1jqSweFqfxPgQQRphi+Yak0YIuqUfJegef4zluaJ3nqPJeCYH4BAeX5TDLBpVGqKRRnwf4flefZtHsX54BYAR/F+EwVnUd5eAMMJKDIChygyIQpAoEh4iIJ5Jlg" +
"XIcgCXpIGoFwnGEQh6BEKBgmMIICHgIJCAiUAzgyUoAhwJohkiRgygwYpiGoKwzGIcgKCkNQNCMRIbCYCRYk4QoMiOchWDwNBjhiJJaDYTRiGiFwlCQAhOE8JBJHITIR" +
"gwZRZFCFCZBkOIUhKTRpCWAwgGYQ4El4NxlBifIWCcCYCFoaoMGaKYyG6GxlBmGJdhkCAWBIeA5g4U4QhMJAImkPIShRVxGgQJRlCIUISh+SJpnCZIeBgFgiHgO4OlOM" +
"INCISByECDQikkGhuh2JwpmqBogCKaYiC6FwhmkQ4yHgYgYiaHopiuaRakCbIsisSpGjYOwaHYKYMCkK5CA2IxrCwCwFigaJrkLTI6lcdANAEgIA=");
	var_Appearance->Add(2,_bstr_t("gBFLBCJwBAEHhEJAAEhABEICg6AADACAxRDgMQBQKAAzAJBIYhiG4cYCgMZhXDOCYXABCEYRXBIZQ7BKNIxjSJ5BhIAAyDSJMjSRJUEhqGCWYDleYYYAKHIMQLJQKQS") +
"BcQR9EaBZBAWTpQC0OJDTJRI4TNAgbSYAAYRqoCb6loTKypaxjCQQIgkUBpGKdBynEYsDwSGyJCCJWyIbpKAwoVbcs4AYhuJpaQi+d5PFbjVT8dLAMBwLA8EwXAJ+Opf" +
"DxXU7eFKpR5fchXTI8UxXFqXZhkeQrfh7KYVRBKdBQRBEFQPJqnahqOpaXo2RoLUJKcQwHTmHYNQTALyuTALZrWeZ3XrgN74LbtZzVQauYRpbCMEr6bpoWLnFi6Ho1U4" +
"llWah1jqSweFqfxPgQQRphi+Yak0YIuqUfJeg8X4rluaZ3niGB+AQHx/EyShjjEVYqiUR5rnmex/GAB5+AIf4gEeXJFHyXZ3gCTAygyAociMKBKEKBIeCiCZyHYFAnCE" +
"eBkh+BghFgRIegOCgYCySAgh4CAkgINAMmMNIgCcCYjn4LoLmMCJGDKC5ijIagoDMYhCAoJg1A0IxEhsJgJFiThChCY5yFYPA0GOGIYloNhNGIaIXCUJACE4TwkEkchO" +
"FSFYlFkXhUCUCQZEYTglCSMxaEkYJIBmFJhDeDZZEYPwlgmQhghaGqVDoa4bGaeY6FGGZNlmFIBGEJ4jhiZQ5AkMhAg6E5JCkRoGCUSQ6B6CYiSCBIOh+DhJmmARiWQO" +
"JtDsCJSCSBwkXSLIRicaZ6HqIIomoIguhwIpphIHoWDsJ4mCGChpmqOpGheLIOkqUo2iya4DjGJxihiQoSj4IJaDaMpCjCWoGg6PgpBiQ4tHcQJQBAgI=");
spG2antt1->PutLinesAtRoot(EXG2ANTTLib::exLinesAtRoot);
spG2antt1->PutBackground(EXG2ANTTLib::exTreeGlyphOpen,0x1000000);
spG2antt1->PutBackground(EXG2ANTTLib::exTreeGlyphClose,0x2000000);
spG2antt1->GetColumns()->Add(L"Column");
EXG2ANTTLib::IItemsPtr var_Items = spG2antt1->GetItems();
	long h = var_Items->AddItem("Root 1");
	var_Items->InsertItem(h,vtMissing,"Child 1");
	var_Items->InsertItem(h,vtMissing,"Child 2");
	var_Items->PutExpandItem(h,VARIANT_TRUE);
	h = var_Items->AddItem("Root 2");
	var_Items->InsertItem(h,vtMissing,"Child");
spG2antt1->EndUpdate();

2027
How can I add a summary bar once the user group by a column

// AddGroupItem event - Occurs after a new Group Item has been inserted to Items collection.
void OnAddGroupItemG2antt1(long   Item)
{
	/*
		Copy and paste the following directives to your header file as
		it defines the namespace 'EXG2ANTTLib' for the library: 'ExG2antt 1.0 Control Library'
		#import <ExG2antt.dll>
		using namespace EXG2ANTTLib;
	*/
	EXG2ANTTLib::IG2anttPtr spG2antt1 = GetDlgItem(IDC_G2ANTT1)->GetControlUnknown();
	EXG2ANTTLib::IItemsPtr var_Items = spG2antt1->GetItems();
		var_Items->PutItemDividerLine(Item,EXG2ANTTLib::EmptyLine);
		var_Items->AddBar(Item,"Summary",COleDateTime(2017,12,2,0,00,00).operator DATE(),COleDateTime(2017,12,2,0,00,00).operator DATE(),vtMissing,vtMissing);
		var_Items->DefineSummaryBars(Item,"",-3,"");
		long l = var_Items->GetGroupItem(Item);
		var_Items->PutCellSingleLine(Item,l,EXG2ANTTLib::exCaptionWordWrap);
		var_Items->PutCellBold(Item,l,VARIANT_TRUE);
		var_Items->PutItemBackColor(Item,RGB(190,190,190));
	spG2antt1->GetChart()->PutItemBackColor(Item,RGB(190,190,190));
}

// AddItem event - Occurs after a new Item has been inserted to Items collection.
void OnAddItemG2antt1(long   Item)
{
	EXG2ANTTLib::IG2anttPtr spG2antt1 = GetDlgItem(IDC_G2ANTT1)->GetControlUnknown();
	spG2antt1->GetItems()->AddBar(Item,"Task",COleDateTime(2017,12,4,0,00,00).operator DATE(),COleDateTime(2017,12,10,0,00,00).operator DATE(),vtMissing,vtMissing);
}

EXG2ANTTLib::IG2anttPtr spG2antt1 = GetDlgItem(IDC_G2ANTT1)->GetControlUnknown();
spG2antt1->BeginUpdate();
spG2antt1->GetVisualAppearance()->Add(1,_bstr_t("gBFLBCJwBAEHhEJAAEhABOUGACAADACAxRDgMQBQKAAzAJBIYhiG4cYCgMZhXDOCYXABCEYRXBIZQ7BKNIxjSJwFgmEgADCMQwAFBIbhrE4ZBjHGQRUgyI43RhHUBzV") +
"IUBxDEaTZLlEYJBgeHYhDJPcaUVDcWQHGyeZwjSgpKoWSJIU5NcggPDgEwTKCmKlTAKoSzJMyEmwWRAdVTZLSEaxierKPhyWT/XgAF4PfDFKRXFqXY5mKZJFqKOI8TxI" +
"NgxPQMGyrBqraLqKwQGrGCQKSBhUZ3dS2JR3OSlYRuQAMVgOXoDZhPWZXbDtSzPE63NgtOR5DiGWalABoeoxRa9cz3ViCJSrGTqIoINIzZLHFQbPpdAYdP6BeIjXhhZx" +
"BBuLZXmEOh9CcNoni2N4MjWVodh+DpfBeLJinsWR9AyYwVAkGBhEAFphGiRogDEGBamkFgtjcZgHiMbgehYaQhAIEIREAaQYkcQZUHIGRUGQDBOEaBAhDYDxGkMZAkCg" +
"eoagYZAYEYAYIAWGhemICIFj8WIiCiFR5gkIhogmBoKGKJx2C6C5hniMgggqYwog0UoNGMZJiDiCZRgOLY0ECUAQICA==");
EXG2ANTTLib::IChartPtr var_Chart = spG2antt1->GetChart();
	var_Chart->PutLevelCount(2);
	var_Chart->PutFirstVisibleDate(COleDateTime(2017,12,2,0,00,00).operator DATE());
	var_Chart->PutPaneWidth(VARIANT_FALSE,342);
	EXG2ANTTLib::IBarPtr var_Bar = var_Chart->GetBars()->GetItem("Summary");
		var_Bar->PutStartShape(EXG2ANTTLib::exShapeIconEmpty);
		var_Bar->PutEndShape(EXG2ANTTLib::exShapeIconEmpty);
		var_Bar->PutShape(EXG2ANTTLib::exShapeSolid);
		var_Bar->PutColor(0x1000000);
		var_Bar->PutDef(EXG2ANTTLib::exBarCaption,"<%=%513%>");
		var_Bar->PutDef(EXG2ANTTLib::exBarHAlignCaption,long(18));
EXG2ANTTLib::IColumnsPtr var_Columns = spG2antt1->GetColumns();
	var_Columns->Add(L"C1");
	var_Columns->Add(L"C2");
	var_Columns->Add(L"C3");
	EXG2ANTTLib::IColumnPtr var_Column = ((EXG2ANTTLib::IColumnPtr)(var_Columns->Add(L"Pos")));
		var_Column->PutFormatColumn(L"1 pos ``");
		var_Column->PutAllowGroupBy(VARIANT_FALSE);
		var_Column->PutPosition(0);
		var_Column->PutWidth(48);
		var_Column->PutAllowSizing(VARIANT_FALSE);
spG2antt1->PutSortBarVisible(VARIANT_TRUE);
spG2antt1->PutSortBarCaption(L"Drag a <b>column</b> header here to group by that column.");
spG2antt1->PutAllowGroupBy(VARIANT_TRUE);
spG2antt1->PutHasLines(EXG2ANTTLib::exNoLine);
spG2antt1->PutLinesAtRoot(EXG2ANTTLib::exNoLinesAtRoot);
EXG2ANTTLib::IItemsPtr var_Items = spG2antt1->GetItems();
	long h = var_Items->AddItem("Item A");
	var_Items->PutCellValue(h,long(1),"SubItem A.1");
	var_Items->PutCellValue(h,long(2),"SubItem A.2");
	h = var_Items->AddItem("Item A");
	var_Items->PutCellValue(h,long(1),"SubItem A.1");
	var_Items->PutCellValue(h,long(2),"SubItem A.2");
	h = var_Items->AddItem("Item A");
	var_Items->PutCellValue(h,long(1),"SubItem A.1");
	var_Items->PutCellValue(h,long(2),"SubItem A.2");
	h = var_Items->AddItem("Item A");
	var_Items->PutCellValue(h,long(1),"SubItem A.1");
	var_Items->PutCellValue(h,long(2),"SubItem A.2");
	h = var_Items->AddItem("Item B");
	var_Items->PutCellValue(h,long(1),"SubItem B.1");
	var_Items->PutCellValue(h,long(2),"SubItem B.2");
	h = var_Items->AddItem("Item B");
	var_Items->PutCellValue(h,long(1),"SubItem B.1");
	var_Items->PutCellValue(h,long(2),"SubItem B.2");
EXG2ANTTLib::IColumnPtr var_Column1 = spG2antt1->GetColumns()->GetItem(long(0));
	var_Column1->PutSortOrder(EXG2ANTTLib::SortAscending);
spG2antt1->EndUpdate();

2026
Is it possible to display no +/- button for grouped items

// AddGroupItem event - Occurs after a new Group Item has been inserted to Items collection.
void OnAddGroupItemG2antt1(long   Item)
{
	/*
		Copy and paste the following directives to your header file as
		it defines the namespace 'EXG2ANTTLib' for the library: 'ExG2antt 1.0 Control Library'
		#import <ExG2antt.dll>
		using namespace EXG2ANTTLib;
	*/
	EXG2ANTTLib::IG2anttPtr spG2antt1 = GetDlgItem(IDC_G2ANTT1)->GetControlUnknown();
	EXG2ANTTLib::IItemsPtr var_Items = spG2antt1->GetItems();
		var_Items->PutItemDividerLine(Item,EXG2ANTTLib::EmptyLine);
		var_Items->AddBar(Item,"Progress",COleDateTime(2017,12,2,0,00,00).operator DATE(),COleDateTime(2017,12,2,0,00,00).operator DATE(),vtMissing,vtMissing);
		var_Items->DefineSummaryBars(Item,"",-3,"");
		long l = var_Items->GetGroupItem(Item);
		var_Items->PutCellSingleLine(Item,l,EXG2ANTTLib::exCaptionWordWrap);
		var_Items->PutCellBold(Item,l,VARIANT_TRUE);
		var_Items->PutItemBackColor(Item,RGB(190,190,190));
	spG2antt1->GetChart()->PutItemBackColor(Item,RGB(190,190,190));
}

// AddItem event - Occurs after a new Item has been inserted to Items collection.
void OnAddItemG2antt1(long   Item)
{
	EXG2ANTTLib::IG2anttPtr spG2antt1 = GetDlgItem(IDC_G2ANTT1)->GetControlUnknown();
	spG2antt1->GetItems()->AddBar(Item,"Task",COleDateTime(2017,12,4,0,00,00).operator DATE(),COleDateTime(2017,12,10,0,00,00).operator DATE(),vtMissing,vtMissing);
}

EXG2ANTTLib::IG2anttPtr spG2antt1 = GetDlgItem(IDC_G2ANTT1)->GetControlUnknown();
spG2antt1->BeginUpdate();
EXG2ANTTLib::IChartPtr var_Chart = spG2antt1->GetChart();
	var_Chart->PutLevelCount(2);
	var_Chart->PutFirstVisibleDate(COleDateTime(2017,12,2,0,00,00).operator DATE());
	var_Chart->PutPaneWidth(VARIANT_FALSE,342);
EXG2ANTTLib::IColumnsPtr var_Columns = spG2antt1->GetColumns();
	var_Columns->Add(L"C1");
	var_Columns->Add(L"C2");
	var_Columns->Add(L"C3");
	EXG2ANTTLib::IColumnPtr var_Column = ((EXG2ANTTLib::IColumnPtr)(var_Columns->Add(L"Pos")));
		var_Column->PutFormatColumn(L"1 pos ``");
		var_Column->PutAllowGroupBy(VARIANT_FALSE);
		var_Column->PutPosition(0);
		var_Column->PutWidth(48);
		var_Column->PutAllowSizing(VARIANT_FALSE);
spG2antt1->PutSortBarVisible(VARIANT_TRUE);
spG2antt1->PutSortBarCaption(L"Drag a <b>column</b> header here to group by that column.");
spG2antt1->PutAllowGroupBy(VARIANT_TRUE);
spG2antt1->PutHasLines(EXG2ANTTLib::exNoLine);
spG2antt1->PutLinesAtRoot(EXG2ANTTLib::exNoLinesAtRoot);
EXG2ANTTLib::IItemsPtr var_Items = spG2antt1->GetItems();
	long h = var_Items->AddItem("Item A");
	var_Items->PutCellValue(h,long(1),"SubItem A.1");
	var_Items->PutCellValue(h,long(2),"SubItem A.2");
	h = var_Items->AddItem("Item A");
	var_Items->PutCellValue(h,long(1),"SubItem A.1");
	var_Items->PutCellValue(h,long(2),"SubItem A.2");
	h = var_Items->AddItem("Item A");
	var_Items->PutCellValue(h,long(1),"SubItem A.1");
	var_Items->PutCellValue(h,long(2),"SubItem A.2");
	h = var_Items->AddItem("Item A");
	var_Items->PutCellValue(h,long(1),"SubItem A.1");
	var_Items->PutCellValue(h,long(2),"SubItem A.2");
	h = var_Items->AddItem("Item B");
	var_Items->PutCellValue(h,long(1),"SubItem B.1");
	var_Items->PutCellValue(h,long(2),"SubItem B.2");
	h = var_Items->AddItem("Item B");
	var_Items->PutCellValue(h,long(1),"SubItem B.1");
	var_Items->PutCellValue(h,long(2),"SubItem B.2");
EXG2ANTTLib::IColumnPtr var_Column1 = spG2antt1->GetColumns()->GetItem(long(0));
	var_Column1->PutSortOrder(EXG2ANTTLib::SortAscending);
	var_Column1->PutAlignment(EXG2ANTTLib::CenterAlignment);
	var_Column1->PutDef(EXG2ANTTLib::exCellBackColor,long(15790320));
spG2antt1->EndUpdate();

2025
How can I change the label, caption or the formula of the grouped items

// AddGroupItem event - Occurs after a new Group Item has been inserted to Items collection.
void OnAddGroupItemG2antt1(long   Item)
{
	/*
		Copy and paste the following directives to your header file as
		it defines the namespace 'EXG2ANTTLib' for the library: 'ExG2antt 1.0 Control Library'
		#import <ExG2antt.dll>
		using namespace EXG2ANTTLib;
	*/
	EXG2ANTTLib::IG2anttPtr spG2antt1 = GetDlgItem(IDC_G2ANTT1)->GetControlUnknown();
	EXG2ANTTLib::IItemsPtr var_Items = spG2antt1->GetItems();
		var_Items->AddBar(Item,"Progress",COleDateTime(2017,12,2,0,00,00).operator DATE(),COleDateTime(2017,12,2,0,00,00).operator DATE(),vtMissing,vtMissing);
		var_Items->DefineSummaryBars(Item,"",-3,"");
}

// AddItem event - Occurs after a new Item has been inserted to Items collection.
void OnAddItemG2antt1(long   Item)
{
	EXG2ANTTLib::IG2anttPtr spG2antt1 = GetDlgItem(IDC_G2ANTT1)->GetControlUnknown();
	spG2antt1->GetItems()->AddBar(Item,"Task",COleDateTime(2017,12,4,0,00,00).operator DATE(),COleDateTime(2017,12,10,0,00,00).operator DATE(),vtMissing,vtMissing);
}

EXG2ANTTLib::IG2anttPtr spG2antt1 = GetDlgItem(IDC_G2ANTT1)->GetControlUnknown();
spG2antt1->BeginUpdate();
EXG2ANTTLib::IChartPtr var_Chart = spG2antt1->GetChart();
	var_Chart->PutLevelCount(2);
	var_Chart->PutFirstVisibleDate(COleDateTime(2017,12,2,0,00,00).operator DATE());
	var_Chart->PutPaneWidth(VARIANT_FALSE,342);
EXG2ANTTLib::IColumnsPtr var_Columns = spG2antt1->GetColumns();
	EXG2ANTTLib::IColumnPtr var_Column = ((EXG2ANTTLib::IColumnPtr)(var_Columns->Add(L"C1")));
		var_Column->PutGroupByTotalField(L"");
		var_Column->PutGroupByFormatCell(L"upper(value)");
	var_Columns->Add(L"C2");
	var_Columns->Add(L"C3");
	EXG2ANTTLib::IColumnPtr var_Column1 = ((EXG2ANTTLib::IColumnPtr)(var_Columns->Add(L"Pos")));
		var_Column1->PutFormatColumn(L"1 pos ``");
		var_Column1->PutAllowGroupBy(VARIANT_FALSE);
		var_Column1->PutPosition(0);
		var_Column1->PutWidth(48);
		var_Column1->PutAllowSizing(VARIANT_FALSE);
spG2antt1->PutSortBarVisible(VARIANT_TRUE);
spG2antt1->PutSortBarCaption(L"Drag a <b>column</b> header here to group by that column.");
spG2antt1->PutAllowGroupBy(VARIANT_TRUE);
EXG2ANTTLib::IItemsPtr var_Items = spG2antt1->GetItems();
	long h = var_Items->AddItem("Item A");
	var_Items->PutCellValue(h,long(1),"SubItem A.1");
	var_Items->PutCellValue(h,long(2),"SubItem A.2");
	h = var_Items->AddItem("Item A");
	var_Items->PutCellValue(h,long(1),"SubItem A.1");
	var_Items->PutCellValue(h,long(2),"SubItem A.2");
	h = var_Items->AddItem("Item A");
	var_Items->PutCellValue(h,long(1),"SubItem A.1");
	var_Items->PutCellValue(h,long(2),"SubItem A.2");
	h = var_Items->AddItem("Item A");
	var_Items->PutCellValue(h,long(1),"SubItem A.1");
	var_Items->PutCellValue(h,long(2),"SubItem A.2");
	h = var_Items->AddItem("Item B");
	var_Items->PutCellValue(h,long(1),"SubItem B.1");
	var_Items->PutCellValue(h,long(2),"SubItem B.2");
	h = var_Items->AddItem("Item B");
	var_Items->PutCellValue(h,long(1),"SubItem B.1");
	var_Items->PutCellValue(h,long(2),"SubItem B.2");
spG2antt1->GetColumns()->GetItem(long(0))->PutSortOrder(EXG2ANTTLib::SortAscending);
spG2antt1->EndUpdate();

2024
How can I change the aspect of grouped items

// AddGroupItem event - Occurs after a new Group Item has been inserted to Items collection.
void OnAddGroupItemG2antt1(long   Item)
{
	/*
		Copy and paste the following directives to your header file as
		it defines the namespace 'EXG2ANTTLib' for the library: 'ExG2antt 1.0 Control Library'
		#import <ExG2antt.dll>
		using namespace EXG2ANTTLib;
	*/
	EXG2ANTTLib::IG2anttPtr spG2antt1 = GetDlgItem(IDC_G2ANTT1)->GetControlUnknown();
	EXG2ANTTLib::IItemsPtr var_Items = spG2antt1->GetItems();
		var_Items->PutItemDividerLine(Item,EXG2ANTTLib::EmptyLine);
		var_Items->AddBar(Item,"Progress",COleDateTime(2017,12,2,0,00,00).operator DATE(),COleDateTime(2017,12,2,0,00,00).operator DATE(),vtMissing,vtMissing);
		var_Items->DefineSummaryBars(Item,"",-3,"");
		long l = var_Items->GetGroupItem(Item);
		var_Items->PutCellSingleLine(Item,l,EXG2ANTTLib::exCaptionWordWrap);
		var_Items->PutCellBold(Item,l,VARIANT_TRUE);
		var_Items->PutItemBackColor(Item,RGB(190,190,190));
	spG2antt1->GetChart()->PutItemBackColor(Item,RGB(190,190,190));
}

// AddItem event - Occurs after a new Item has been inserted to Items collection.
void OnAddItemG2antt1(long   Item)
{
	EXG2ANTTLib::IG2anttPtr spG2antt1 = GetDlgItem(IDC_G2ANTT1)->GetControlUnknown();
	spG2antt1->GetItems()->AddBar(Item,"Task",COleDateTime(2017,12,4,0,00,00).operator DATE(),COleDateTime(2017,12,10,0,00,00).operator DATE(),vtMissing,vtMissing);
}

EXG2ANTTLib::IG2anttPtr spG2antt1 = GetDlgItem(IDC_G2ANTT1)->GetControlUnknown();
spG2antt1->BeginUpdate();
EXG2ANTTLib::IChartPtr var_Chart = spG2antt1->GetChart();
	var_Chart->PutLevelCount(2);
	var_Chart->PutFirstVisibleDate(COleDateTime(2017,12,2,0,00,00).operator DATE());
	var_Chart->PutPaneWidth(VARIANT_FALSE,342);
EXG2ANTTLib::IColumnsPtr var_Columns = spG2antt1->GetColumns();
	var_Columns->Add(L"C1");
	var_Columns->Add(L"C2");
	var_Columns->Add(L"C3");
	EXG2ANTTLib::IColumnPtr var_Column = ((EXG2ANTTLib::IColumnPtr)(var_Columns->Add(L"Pos")));
		var_Column->PutFormatColumn(L"1 pos ``");
		var_Column->PutAllowGroupBy(VARIANT_FALSE);
		var_Column->PutPosition(0);
		var_Column->PutWidth(48);
		var_Column->PutAllowSizing(VARIANT_FALSE);
spG2antt1->PutSortBarVisible(VARIANT_TRUE);
spG2antt1->PutSortBarCaption(L"Drag a <b>column</b> header here to group by that column.");
spG2antt1->PutAllowGroupBy(VARIANT_TRUE);
EXG2ANTTLib::IItemsPtr var_Items = spG2antt1->GetItems();
	long h = var_Items->AddItem("Item A");
	var_Items->PutCellValue(h,long(1),"SubItem A.1");
	var_Items->PutCellValue(h,long(2),"SubItem A.2");
	h = var_Items->AddItem("Item A");
	var_Items->PutCellValue(h,long(1),"SubItem A.1");
	var_Items->PutCellValue(h,long(2),"SubItem A.2");
	h = var_Items->AddItem("Item A");
	var_Items->PutCellValue(h,long(1),"SubItem A.1");
	var_Items->PutCellValue(h,long(2),"SubItem A.2");
	h = var_Items->AddItem("Item A");
	var_Items->PutCellValue(h,long(1),"SubItem A.1");
	var_Items->PutCellValue(h,long(2),"SubItem A.2");
	h = var_Items->AddItem("Item B");
	var_Items->PutCellValue(h,long(1),"SubItem B.1");
	var_Items->PutCellValue(h,long(2),"SubItem B.2");
	h = var_Items->AddItem("Item B");
	var_Items->PutCellValue(h,long(1),"SubItem B.1");
	var_Items->PutCellValue(h,long(2),"SubItem B.2");
spG2antt1->GetColumns()->GetItem(long(0))->PutSortOrder(EXG2ANTTLib::SortAscending);
spG2antt1->EndUpdate();

2023
How can I collapse all items when the user performs a grouping

// AddGroupItem event - Occurs after a new Group Item has been inserted to Items collection.
void OnAddGroupItemG2antt1(long   Item)
{
	/*
		Copy and paste the following directives to your header file as
		it defines the namespace 'EXG2ANTTLib' for the library: 'ExG2antt 1.0 Control Library'
		#import <ExG2antt.dll>
		using namespace EXG2ANTTLib;
	*/
	EXG2ANTTLib::IG2anttPtr spG2antt1 = GetDlgItem(IDC_G2ANTT1)->GetControlUnknown();
	EXG2ANTTLib::IItemsPtr var_Items = spG2antt1->GetItems();
		var_Items->PutExpandItem(Item,VARIANT_FALSE);
		var_Items->PutItemDividerLine(Item,EXG2ANTTLib::EmptyLine);
		var_Items->AddBar(Item,"Progress",COleDateTime(2017,12,2,0,00,00).operator DATE(),COleDateTime(2017,12,2,0,00,00).operator DATE(),vtMissing,vtMissing);
		var_Items->DefineSummaryBars(Item,"",-3,"");
}

// AddItem event - Occurs after a new Item has been inserted to Items collection.
void OnAddItemG2antt1(long   Item)
{
	EXG2ANTTLib::IG2anttPtr spG2antt1 = GetDlgItem(IDC_G2ANTT1)->GetControlUnknown();
	spG2antt1->GetItems()->AddBar(Item,"Task",COleDateTime(2017,12,4,0,00,00).operator DATE(),COleDateTime(2017,12,10,0,00,00).operator DATE(),vtMissing,vtMissing);
}

EXG2ANTTLib::IG2anttPtr spG2antt1 = GetDlgItem(IDC_G2ANTT1)->GetControlUnknown();
spG2antt1->BeginUpdate();
EXG2ANTTLib::IChartPtr var_Chart = spG2antt1->GetChart();
	var_Chart->PutLevelCount(2);
	var_Chart->PutFirstVisibleDate(COleDateTime(2017,12,2,0,00,00).operator DATE());
	var_Chart->PutPaneWidth(VARIANT_FALSE,342);
EXG2ANTTLib::IColumnsPtr var_Columns = spG2antt1->GetColumns();
	var_Columns->Add(L"C1");
	var_Columns->Add(L"C2");
	var_Columns->Add(L"C3");
	EXG2ANTTLib::IColumnPtr var_Column = ((EXG2ANTTLib::IColumnPtr)(var_Columns->Add(L"Pos")));
		var_Column->PutFormatColumn(L"1 pos ``");
		var_Column->PutAllowGroupBy(VARIANT_FALSE);
		var_Column->PutPosition(0);
		var_Column->PutWidth(48);
		var_Column->PutAllowSizing(VARIANT_FALSE);
spG2antt1->PutSortBarVisible(VARIANT_TRUE);
spG2antt1->PutSortBarCaption(L"Drag a <b>column</b> header here to group by that column.");
spG2antt1->PutAllowGroupBy(VARIANT_TRUE);
EXG2ANTTLib::IItemsPtr var_Items = spG2antt1->GetItems();
	long h = var_Items->AddItem("Item A");
	var_Items->PutCellValue(h,long(1),"SubItem A.1");
	var_Items->PutCellValue(h,long(2),"SubItem A.2");
	h = var_Items->AddItem("Item A");
	var_Items->PutCellValue(h,long(1),"SubItem A.1");
	var_Items->PutCellValue(h,long(2),"SubItem A.2");
	h = var_Items->AddItem("Item A");
	var_Items->PutCellValue(h,long(1),"SubItem A.1");
	var_Items->PutCellValue(h,long(2),"SubItem A.2");
	h = var_Items->AddItem("Item A");
	var_Items->PutCellValue(h,long(1),"SubItem A.1");
	var_Items->PutCellValue(h,long(2),"SubItem A.2");
	h = var_Items->AddItem("Item B");
	var_Items->PutCellValue(h,long(1),"SubItem B.1");
	var_Items->PutCellValue(h,long(2),"SubItem B.2");
	h = var_Items->AddItem("Item B");
	var_Items->PutCellValue(h,long(1),"SubItem B.1");
	var_Items->PutCellValue(h,long(2),"SubItem B.2");
spG2antt1->GetColumns()->GetItem(long(0))->PutSortOrder(EXG2ANTTLib::SortAscending);
spG2antt1->EndUpdate();

2022
Is it possible to select columns that user can drop to the sort bar, when using the Group By feature

// AddItem event - Occurs after a new Item has been inserted to Items collection.
void OnAddItemG2antt1(long   Item)
{
	/*
		Copy and paste the following directives to your header file as
		it defines the namespace 'EXG2ANTTLib' for the library: 'ExG2antt 1.0 Control Library'
		#import <ExG2antt.dll>
		using namespace EXG2ANTTLib;
	*/
	EXG2ANTTLib::IG2anttPtr spG2antt1 = GetDlgItem(IDC_G2ANTT1)->GetControlUnknown();
	spG2antt1->GetItems()->AddBar(Item,"Task",COleDateTime(2017,12,4,0,00,00).operator DATE(),COleDateTime(2017,12,10,0,00,00).operator DATE(),vtMissing,vtMissing);
}

EXG2ANTTLib::IG2anttPtr spG2antt1 = GetDlgItem(IDC_G2ANTT1)->GetControlUnknown();
spG2antt1->BeginUpdate();
EXG2ANTTLib::IChartPtr var_Chart = spG2antt1->GetChart();
	var_Chart->PutLevelCount(2);
	var_Chart->PutFirstVisibleDate(COleDateTime(2017,12,2,0,00,00).operator DATE());
	var_Chart->PutPaneWidth(VARIANT_FALSE,342);
EXG2ANTTLib::IColumnsPtr var_Columns = spG2antt1->GetColumns();
	var_Columns->Add(L"C1");
	var_Columns->Add(L"C2");
	var_Columns->Add(L"C3");
	EXG2ANTTLib::IColumnPtr var_Column = ((EXG2ANTTLib::IColumnPtr)(var_Columns->Add(L"Pos")));
		var_Column->PutFormatColumn(L"1 pos ``");
		var_Column->PutAllowGroupBy(VARIANT_FALSE);
		var_Column->PutPosition(0);
		var_Column->PutWidth(48);
		var_Column->PutAllowSizing(VARIANT_FALSE);
spG2antt1->PutSortBarVisible(VARIANT_TRUE);
spG2antt1->PutSortBarCaption(L"<fgcolor=FF0000>Try to drag the Pos column here.");
spG2antt1->PutAllowGroupBy(VARIANT_TRUE);
EXG2ANTTLib::IItemsPtr var_Items = spG2antt1->GetItems();
	long h = var_Items->AddItem("Item A");
	var_Items->PutCellValue(h,long(1),"SubItem A.1");
	var_Items->PutCellValue(h,long(2),"SubItem A.2");
	h = var_Items->AddItem("Item A");
	var_Items->PutCellValue(h,long(1),"SubItem A.1");
	var_Items->PutCellValue(h,long(2),"SubItem A.2");
	h = var_Items->AddItem("Item A");
	var_Items->PutCellValue(h,long(1),"SubItem A.1");
	var_Items->PutCellValue(h,long(2),"SubItem A.2");
	h = var_Items->AddItem("Item A");
	var_Items->PutCellValue(h,long(1),"SubItem A.1");
	var_Items->PutCellValue(h,long(2),"SubItem A.2");
	h = var_Items->AddItem("Item B");
	var_Items->PutCellValue(h,long(1),"SubItem B.1");
	var_Items->PutCellValue(h,long(2),"SubItem B.2");
	h = var_Items->AddItem("Item B");
	var_Items->PutCellValue(h,long(1),"SubItem B.1");
	var_Items->PutCellValue(h,long(2),"SubItem B.2");
spG2antt1->EndUpdate();

2021
How can I filter for the type of the bars I have in my chart

/*
	Copy and paste the following directives to your header file as
	it defines the namespace 'EXG2ANTTLib' for the library: 'ExG2antt 1.0 Control Library'

	#import <ExG2antt.dll>
	using namespace EXG2ANTTLib;
*/
EXG2ANTTLib::IG2anttPtr spG2antt1 = GetDlgItem(IDC_G2ANTT1)->GetControlUnknown();
spG2antt1->BeginUpdate();
EXG2ANTTLib::IChartPtr var_Chart = spG2antt1->GetChart();
	var_Chart->PutLevelCount(2);
	var_Chart->PutFirstVisibleDate(COleDateTime(2017,11,28,0,00,00).operator DATE());
	var_Chart->PutPaneWidth(VARIANT_FALSE,0);
	EXG2ANTTLib::IBarPtr var_Bar = var_Chart->GetBars()->GetItem("Task");
		var_Bar->PutDef(EXG2ANTTLib::exBarCaption,"<%=%0%>");
		var_Bar->PutDef(EXG2ANTTLib::exBarHAlignCaption,long(18));
	EXG2ANTTLib::IBarPtr var_Bar1 = var_Chart->GetBars()->Copy(L"Task",L"GTask");
		var_Bar1->PutDef(EXG2ANTTLib::exBarCaption,"<%=%0%>");
		var_Bar1->PutDef(EXG2ANTTLib::exBarHAlignCaption,long(18));
		var_Bar1->PutColor(RGB(0,255,0));
	EXG2ANTTLib::IBarPtr var_Bar2 = var_Chart->GetBars()->Copy(L"Task",L"RTask");
		var_Bar2->PutDef(EXG2ANTTLib::exBarCaption,"<%=%0%>");
		var_Bar2->PutDef(EXG2ANTTLib::exBarHAlignCaption,long(18));
		var_Bar2->PutColor(RGB(255,0,0));
	var_Chart->PutColumnsFormatLevel(L"0");
spG2antt1->PutOnResizeControl(EXG2ANTTLib::OnResizeControlEnum(EXG2ANTTLib::exDisableSplitter | EXG2ANTTLib::exResizeChart));
EXG2ANTTLib::IColumnPtr var_Column = ((EXG2ANTTLib::IColumnPtr)(spG2antt1->GetColumns()->Add(L"Default")));
	var_Column->PutDisplayFilterButton(VARIANT_TRUE);
	var_Column->PutFilterList(EXG2ANTTLib::FilterListEnum(EXG2ANTTLib::exShowExclude | EXG2ANTTLib::exShowFocusItem | EXG2ANTTLib::exShowCheckBox | EXG2ANTTLib::exSortItemsAsc));
EXG2ANTTLib::IColumnPtr var_Column1 = ((EXG2ANTTLib::IColumnPtr)(spG2antt1->GetColumns()->Add(L"Type")));
	var_Column1->PutDef(EXG2ANTTLib::exCellValueToItemBarKey,"");
	var_Column1->PutDef(EXG2ANTTLib::exCellValueToItemBarProperty,long(0));
	var_Column1->PutVisible(VARIANT_FALSE);
	var_Column1->PutDisplayFilterButton(VARIANT_TRUE);
	var_Column1->PutFilterList(EXG2ANTTLib::FilterListEnum(EXG2ANTTLib::exShowExclude | EXG2ANTTLib::exShowFocusItem | EXG2ANTTLib::exShowCheckBox | EXG2ANTTLib::exSortItemsAsc));
EXG2ANTTLib::IItemsPtr var_Items = spG2antt1->GetItems();
	var_Items->PutAllowCellValueToItemBar(VARIANT_TRUE);
	var_Items->AddBar(var_Items->AddItem("Item 1"),"Task",COleDateTime(2017,12,4,0,00,00).operator DATE(),COleDateTime(2017,12,12,0,00,00).operator DATE(),vtMissing,vtMissing);
	var_Items->AddBar(var_Items->AddItem("Item 2"),"GTask",COleDateTime(2017,12,4,0,00,00).operator DATE(),COleDateTime(2017,12,12,0,00,00).operator DATE(),vtMissing,vtMissing);
	var_Items->AddBar(var_Items->AddItem("Item 3"),"RTask",COleDateTime(2017,12,4,0,00,00).operator DATE(),COleDateTime(2017,12,12,0,00,00).operator DATE(),vtMissing,vtMissing);
	var_Items->AddBar(var_Items->AddItem("Item 4"),"Task",COleDateTime(2017,12,4,0,00,00).operator DATE(),COleDateTime(2017,12,12,0,00,00).operator DATE(),vtMissing,vtMissing);
	var_Items->AddBar(var_Items->AddItem("Item 5"),"GTask",COleDateTime(2017,12,4,0,00,00).operator DATE(),COleDateTime(2017,12,12,0,00,00).operator DATE(),vtMissing,vtMissing);
	var_Items->AddBar(var_Items->AddItem("Item 6"),"RTask",COleDateTime(2017,12,4,0,00,00).operator DATE(),COleDateTime(2017,12,12,0,00,00).operator DATE(),vtMissing,vtMissing);
/*
	Copy and paste the following directives to your header file as
	it defines the namespace 'stdole' for the library: 'OLE Automation'

	#import <stdole2.tlb>
*/
spG2antt1->PutFilterBarFont(IFontDispPtr(((stdole::FontPtr)(spG2antt1->GetFont()))));
spG2antt1->PutDescription(EXG2ANTTLib::exFilterBarAnd,_bstr_t(spG2antt1->FormatABC(L"`<fgcolor=808080> ` + value + ` </fgcolor>`",spG2antt1->GetDescription(EXG2ANTTLib::exFilterBarAnd),vtMissing,vtMissing)));
spG2antt1->PutFilterBarCaption(_bstr_t("(( ( all replace `[<b>` with `<bgcolor=000000><fgcolor=FFFFFF><b> ` replace `</b>]` with ` </b></bgcolor></fgcolor>` replace `[") +
"<s>` with `<bgcolor=C0C0C0><fgcolor=FFFFFF> ` replace `</s>]` with ` </fgcolor></bgcolor>` )  + `<r><fgcolor=808080>` + ( matchi" +
"temcount < 0 ? ( ( len(value) ? `` : `` ) + `<r>` + abs(matchitemcount + 1) + ` result(s)` ) : (`<r><fgcolor=808080>`+ itemcount" +
" + ` item(s)`) )))");
spG2antt1->PutFilterBarPromptVisible(EXG2ANTTLib::FilterBarVisibleEnum(EXG2ANTTLib::exFilterBarCompact | EXG2ANTTLib::exFilterBarShowCloseIfRequired | EXG2ANTTLib::exFilterBarSingleLine | EXG2ANTTLib::exFilterBarVisible | EXG2ANTTLib::exFilterBarPromptVisible));
EXG2ANTTLib::IColumnPtr var_Column2 = spG2antt1->GetColumns()->GetItem(long(1));
	var_Column2->PutFilterType(EXG2ANTTLib::exFilter);
	var_Column2->PutFilter(L"GTask|RTask");
spG2antt1->ApplyFilter();
spG2antt1->EndUpdate();

2020
How can I display the control's filter bar in the Items section only, as it was displayed before

// AddItem event - Occurs after a new Item has been inserted to Items collection.
void OnAddItemG2antt1(long   Item)
{
	/*
		Copy and paste the following directives to your header file as
		it defines the namespace 'EXG2ANTTLib' for the library: 'ExG2antt 1.0 Control Library'
		#import <ExG2antt.dll>
		using namespace EXG2ANTTLib;
	*/
	EXG2ANTTLib::IG2anttPtr spG2antt1 = GetDlgItem(IDC_G2ANTT1)->GetControlUnknown();
	spG2antt1->GetItems()->AddBar(Item,"Task",COleDateTime(2017,12,4,0,00,00).operator DATE(),COleDateTime(2017,12,14,0,00,00).operator DATE(),vtMissing,vtMissing);
}

EXG2ANTTLib::IG2anttPtr spG2antt1 = GetDlgItem(IDC_G2ANTT1)->GetControlUnknown();
spG2antt1->BeginUpdate();
EXG2ANTTLib::IChartPtr var_Chart = spG2antt1->GetChart();
	var_Chart->PutLevelCount(2);
	var_Chart->PutFirstVisibleDate(COleDateTime(2017,12,2,0,00,00).operator DATE());
	var_Chart->PutPaneWidth(VARIANT_FALSE,256);
EXG2ANTTLib::IColumnPtr var_Column = ((EXG2ANTTLib::IColumnPtr)(spG2antt1->GetColumns()->Add(L"Col-1")));
	var_Column->PutDisplayFilterButton(VARIANT_TRUE);
	var_Column->PutFilterList(EXG2ANTTLib::FilterListEnum(EXG2ANTTLib::exShowExclude | EXG2ANTTLib::exShowFocusItem | EXG2ANTTLib::exShowCheckBox | EXG2ANTTLib::exSortItemsAsc));
EXG2ANTTLib::IColumnPtr var_Column1 = ((EXG2ANTTLib::IColumnPtr)(spG2antt1->GetColumns()->Add(L"Col-2")));
	var_Column1->PutDisplayFilterButton(VARIANT_TRUE);
	var_Column1->PutFilterList(EXG2ANTTLib::FilterListEnum(EXG2ANTTLib::exShowExclude | EXG2ANTTLib::exShowFocusItem | EXG2ANTTLib::exShowCheckBox | EXG2ANTTLib::exSortItemsAsc));
EXG2ANTTLib::IColumnPtr var_Column2 = ((EXG2ANTTLib::IColumnPtr)(spG2antt1->GetColumns()->Add(L"Pos")));
	var_Column2->PutAllowSizing(VARIANT_FALSE);
	var_Column2->PutAllowSort(VARIANT_FALSE);
	var_Column2->PutWidth(32);
	var_Column2->PutFormatColumn(L"1 apos ``");
	var_Column2->PutPosition(0);
EXG2ANTTLib::IItemsPtr var_Items = spG2antt1->GetItems();
	var_Items->PutCellValue(var_Items->AddItem("Item A"),long(1),"Sub-Item A");
	var_Items->PutCellValue(var_Items->AddItem("Item B"),long(1),"Sub-Item B");
	var_Items->PutCellValue(var_Items->AddItem("Item C"),long(1),"Sub-Item C");
spG2antt1->PutFilterBarPromptVisible(EXG2ANTTLib::exFilterBarShort);
EXG2ANTTLib::IColumnPtr var_Column3 = spG2antt1->GetColumns()->GetItem(long(1));
	var_Column3->PutFilterType(EXG2ANTTLib::exPattern);
	var_Column3->PutFilter(L"*B");
spG2antt1->ApplyFilter();
spG2antt1->EndUpdate();

2019
FilterBarCaption ALL Keyword ( sample 2, result )

// AddItem event - Occurs after a new Item has been inserted to Items collection.
void OnAddItemG2antt1(long   Item)
{
	/*
		Copy and paste the following directives to your header file as
		it defines the namespace 'EXG2ANTTLib' for the library: 'ExG2antt 1.0 Control Library'
		#import <ExG2antt.dll>
		using namespace EXG2ANTTLib;
	*/
	EXG2ANTTLib::IG2anttPtr spG2antt1 = GetDlgItem(IDC_G2ANTT1)->GetControlUnknown();
	_variant_t i = spG2antt1->FormatABC(L"value + 1",spG2antt1->GetItems()->GetItemToIndex(Item),vtMissing,vtMissing);
	spG2antt1->GetItems()->PutCellImage(Item,long(3),i);
	spG2antt1->GetItems()->AddBar(Item,"Task",COleDateTime(2017,12,4,0,00,00).operator DATE(),COleDateTime(2017,12,14,0,00,00).operator DATE(),vtMissing,vtMissing);
}

EXG2ANTTLib::IG2anttPtr spG2antt1 = GetDlgItem(IDC_G2ANTT1)->GetControlUnknown();
spG2antt1->BeginUpdate();
EXG2ANTTLib::IChartPtr var_Chart = spG2antt1->GetChart();
	var_Chart->PutLevelCount(2);
	var_Chart->PutFirstVisibleDate(COleDateTime(2017,12,2,0,00,00).operator DATE());
	var_Chart->PutPaneWidth(VARIANT_FALSE,256);
spG2antt1->Images(_bstr_t("gBJJgBAIDAAGAAEAAQhYAf8Pf4hh0QihCJo2AEZjQAjEZFEaIEaEEaAIAkcbk0olUrlktl0vmExmUzmk1m03nE5nU7nk9n0/oFBoVDolFo1HpFJpVLplNp1PqFRqVTq") +
"lVq1XrFZrVbrldr1fsFhsVjslls1ntFptVrtltt1vuFxuVzul1u13vF5vV7vl9v1/wGBwWDwmFw2HxGJxWLxmNx0xiFdyOTh8Tf9ZymXx+QytcyNgz8r0OblWjyWds+m" +
"0ka1Vf1ta1+r1mos2xrG2xeZ0+a0W0qOx3GO4NV3WeyvD2XJ5XL5nN51aiw+lfSj0gkUkAEllHanHI5j/cHg8EZf7w8vl8j4f/qfEZeB09/vjLAB30+kZQAP/P5/H6/y" +
"NAOAEAwCjMBwFAEDwJBMDwLBYAP2/8Hv8/gAGAD8LQs9w/nhDY/oygIA=");
EXG2ANTTLib::IColumnPtr var_Column = ((EXG2ANTTLib::IColumnPtr)(spG2antt1->GetColumns()->Add(L"Col-1")));
	var_Column->PutDisplayFilterButton(VARIANT_TRUE);
	var_Column->PutFilterList(EXG2ANTTLib::FilterListEnum(EXG2ANTTLib::exShowExclude | EXG2ANTTLib::exShowFocusItem | EXG2ANTTLib::exShowCheckBox | EXG2ANTTLib::exSortItemsAsc));
EXG2ANTTLib::IColumnPtr var_Column1 = ((EXG2ANTTLib::IColumnPtr)(spG2antt1->GetColumns()->Add(L"Col-2")));
	var_Column1->PutDisplayFilterButton(VARIANT_TRUE);
	var_Column1->PutFilterList(EXG2ANTTLib::FilterListEnum(EXG2ANTTLib::exShowExclude | EXG2ANTTLib::exShowFocusItem | EXG2ANTTLib::exShowCheckBox | EXG2ANTTLib::exSortItemsAsc));
EXG2ANTTLib::IColumnPtr var_Column2 = ((EXG2ANTTLib::IColumnPtr)(spG2antt1->GetColumns()->Add(L"Check")));
	EXG2ANTTLib::IEditorPtr var_Editor = var_Column2->GetEditor();
		var_Editor->PutEditType(EXG2ANTTLib::CheckValueType);
		var_Editor->PutOption(EXG2ANTTLib::exCheckValue2,long(1));
	var_Column2->PutDisplayFilterButton(VARIANT_TRUE);
	var_Column2->PutDisplayFilterPattern(VARIANT_FALSE);
	var_Column2->PutFilterType(EXG2ANTTLib::exCheck);
EXG2ANTTLib::IColumnPtr var_Column3 = ((EXG2ANTTLib::IColumnPtr)(spG2antt1->GetColumns()->Add(L"Image")));
	var_Column3->PutDisplayFilterButton(VARIANT_TRUE);
	var_Column3->PutFilterType(EXG2ANTTLib::exImage);
	var_Column3->PutFilterList(EXG2ANTTLib::FilterListEnum(EXG2ANTTLib::exShowExclude | EXG2ANTTLib::exShowFocusItem | EXG2ANTTLib::exShowCheckBox));
EXG2ANTTLib::IColumnPtr var_Column4 = ((EXG2ANTTLib::IColumnPtr)(spG2antt1->GetColumns()->Add(L"Pos")));
	var_Column4->PutAllowSizing(VARIANT_FALSE);
	var_Column4->PutAllowSort(VARIANT_FALSE);
	var_Column4->PutWidth(32);
	var_Column4->PutFormatColumn(L"1 apos ``");
	var_Column4->PutPosition(0);
EXG2ANTTLib::IItemsPtr var_Items = spG2antt1->GetItems();
	var_Items->PutCellValue(var_Items->AddItem("Item A"),long(1),"Sub-Item A");
	long h = var_Items->AddItem("Item B");
	var_Items->PutCellValue(h,long(1),"Sub-Item B");
	var_Items->PutCellState(h,long(2),1);
	var_Items->PutCellValue(var_Items->AddItem("Item C"),long(1),"Sub-Item C");
/*
	Copy and paste the following directives to your header file as
	it defines the namespace 'stdole' for the library: 'OLE Automation'

	#import <stdole2.tlb>
*/
spG2antt1->PutFilterBarFont(IFontDispPtr(((stdole::FontPtr)(spG2antt1->GetFont()))));
spG2antt1->PutDescription(EXG2ANTTLib::exFilterBarAnd,_bstr_t(spG2antt1->FormatABC(L"`<fgcolor=808080> ` + value + ` </fgcolor>`",spG2antt1->GetDescription(EXG2ANTTLib::exFilterBarAnd),vtMissing,vtMissing)));
spG2antt1->PutFilterBarCaption(_bstr_t("(( ( all replace `[<b>` with `<bgcolor=000000><fgcolor=FFFFFF><b> ` replace `</b>]` with ` </b></bgcolor></fgcolor>` replace `[") +
"<s>` with `<bgcolor=C0C0C0><fgcolor=FFFFFF> ` replace `</s>]` with ` </fgcolor></bgcolor>` )  + `<r><fgcolor=808080>` + ( matchi" +
"temcount < 0 ? ( ( len(value) ? `` : `` ) + `<r>` + abs(matchitemcount + 1) + ` result(s)` ) : (`<r><fgcolor=808080>`+ itemcount" +
" + ` item(s)`) )))");
spG2antt1->PutFilterBarPromptVisible(EXG2ANTTLib::FilterBarVisibleEnum(EXG2ANTTLib::exFilterBarVisible | EXG2ANTTLib::exFilterBarPromptVisible));
EXG2ANTTLib::IColumnPtr var_Column5 = spG2antt1->GetColumns()->GetItem(long(0));
	var_Column5->PutFilterType(EXG2ANTTLib::exFilter);
	var_Column5->PutFilter(L"Item A|Item B");
spG2antt1->GetColumns()->GetItem(long(2))->PutFilter(L"1");
spG2antt1->ApplyFilter();
spG2antt1->EndUpdate();

2018
FilterBarCaption ALL Keyword ( sample 1 )

// AddItem event - Occurs after a new Item has been inserted to Items collection.
void OnAddItemG2antt1(long   Item)
{
	/*
		Copy and paste the following directives to your header file as
		it defines the namespace 'EXG2ANTTLib' for the library: 'ExG2antt 1.0 Control Library'
		#import <ExG2antt.dll>
		using namespace EXG2ANTTLib;
	*/
	EXG2ANTTLib::IG2anttPtr spG2antt1 = GetDlgItem(IDC_G2ANTT1)->GetControlUnknown();
	_variant_t i = spG2antt1->FormatABC(L"value + 1",spG2antt1->GetItems()->GetItemToIndex(Item),vtMissing,vtMissing);
	spG2antt1->GetItems()->PutCellImage(Item,long(3),i);
	spG2antt1->GetItems()->AddBar(Item,"Task",COleDateTime(2017,12,4,0,00,00).operator DATE(),COleDateTime(2017,12,14,0,00,00).operator DATE(),vtMissing,vtMissing);
}

EXG2ANTTLib::IG2anttPtr spG2antt1 = GetDlgItem(IDC_G2ANTT1)->GetControlUnknown();
spG2antt1->BeginUpdate();
EXG2ANTTLib::IChartPtr var_Chart = spG2antt1->GetChart();
	var_Chart->PutLevelCount(2);
	var_Chart->PutFirstVisibleDate(COleDateTime(2017,12,2,0,00,00).operator DATE());
	var_Chart->PutPaneWidth(VARIANT_FALSE,256);
spG2antt1->Images(_bstr_t("gBJJgBAIDAAGAAEAAQhYAf8Pf4hh0QihCJo2AEZjQAjEZFEaIEaEEaAIAkcbk0olUrlktl0vmExmUzmk1m03nE5nU7nk9n0/oFBoVDolFo1HpFJpVLplNp1PqFRqVTq") +
"lVq1XrFZrVbrldr1fsFhsVjslls1ntFptVrtltt1vuFxuVzul1u13vF5vV7vl9v1/wGBwWDwmFw2HxGJxWLxmNx0xiFdyOTh8Tf9ZymXx+QytcyNgz8r0OblWjyWds+m" +
"0ka1Vf1ta1+r1mos2xrG2xeZ0+a0W0qOx3GO4NV3WeyvD2XJ5XL5nN51aiw+lfSj0gkUkAEllHanHI5j/cHg8EZf7w8vl8j4f/qfEZeB09/vjLAB30+kZQAP/P5/H6/y" +
"NAOAEAwCjMBwFAEDwJBMDwLBYAP2/8Hv8/gAGAD8LQs9w/nhDY/oygIA=");
EXG2ANTTLib::IColumnPtr var_Column = ((EXG2ANTTLib::IColumnPtr)(spG2antt1->GetColumns()->Add(L"Col-1")));
	var_Column->PutDisplayFilterButton(VARIANT_TRUE);
	var_Column->PutFilterList(EXG2ANTTLib::FilterListEnum(EXG2ANTTLib::exShowExclude | EXG2ANTTLib::exShowFocusItem | EXG2ANTTLib::exShowCheckBox | EXG2ANTTLib::exSortItemsAsc));
EXG2ANTTLib::IColumnPtr var_Column1 = ((EXG2ANTTLib::IColumnPtr)(spG2antt1->GetColumns()->Add(L"Col-2")));
	var_Column1->PutDisplayFilterButton(VARIANT_TRUE);
	var_Column1->PutFilterList(EXG2ANTTLib::FilterListEnum(EXG2ANTTLib::exShowExclude | EXG2ANTTLib::exShowFocusItem | EXG2ANTTLib::exShowCheckBox | EXG2ANTTLib::exSortItemsAsc));
EXG2ANTTLib::IColumnPtr var_Column2 = ((EXG2ANTTLib::IColumnPtr)(spG2antt1->GetColumns()->Add(L"Check")));
	EXG2ANTTLib::IEditorPtr var_Editor = var_Column2->GetEditor();
		var_Editor->PutEditType(EXG2ANTTLib::CheckValueType);
		var_Editor->PutOption(EXG2ANTTLib::exCheckValue2,long(1));
	var_Column2->PutDisplayFilterButton(VARIANT_TRUE);
	var_Column2->PutDisplayFilterPattern(VARIANT_FALSE);
	var_Column2->PutFilterType(EXG2ANTTLib::exCheck);
EXG2ANTTLib::IColumnPtr var_Column3 = ((EXG2ANTTLib::IColumnPtr)(spG2antt1->GetColumns()->Add(L"Image")));
	var_Column3->PutDisplayFilterButton(VARIANT_TRUE);
	var_Column3->PutFilterType(EXG2ANTTLib::exImage);
	var_Column3->PutFilterList(EXG2ANTTLib::FilterListEnum(EXG2ANTTLib::exShowExclude | EXG2ANTTLib::exShowFocusItem | EXG2ANTTLib::exShowCheckBox));
EXG2ANTTLib::IColumnPtr var_Column4 = ((EXG2ANTTLib::IColumnPtr)(spG2antt1->GetColumns()->Add(L"Pos")));
	var_Column4->PutAllowSizing(VARIANT_FALSE);
	var_Column4->PutAllowSort(VARIANT_FALSE);
	var_Column4->PutWidth(32);
	var_Column4->PutFormatColumn(L"1 apos ``");
	var_Column4->PutPosition(0);
EXG2ANTTLib::IItemsPtr var_Items = spG2antt1->GetItems();
	var_Items->PutCellValue(var_Items->AddItem("Item A"),long(1),"Sub-Item A");
	long h = var_Items->AddItem("Item B");
	var_Items->PutCellValue(h,long(1),"Sub-Item B");
	var_Items->PutCellState(h,long(2),1);
	var_Items->PutCellValue(var_Items->AddItem("Item C"),long(1),"Sub-Item C");
/*
	Copy and paste the following directives to your header file as
	it defines the namespace 'stdole' for the library: 'OLE Automation'

	#import <stdole2.tlb>
*/
spG2antt1->PutFilterBarFont(IFontDispPtr(((stdole::FontPtr)(spG2antt1->GetFont()))));
spG2antt1->PutDescription(EXG2ANTTLib::exFilterBarAnd,_bstr_t(spG2antt1->FormatABC(L"`<fgcolor=808080> ` + value + ` </fgcolor>`",spG2antt1->GetDescription(EXG2ANTTLib::exFilterBarAnd),vtMissing,vtMissing)));
spG2antt1->PutFilterBarCaption(L"all");
spG2antt1->PutFilterBarPromptVisible(EXG2ANTTLib::FilterBarVisibleEnum(EXG2ANTTLib::exFilterBarVisible | EXG2ANTTLib::exFilterBarPromptVisible));
EXG2ANTTLib::IColumnPtr var_Column5 = spG2antt1->GetColumns()->GetItem(long(0));
	var_Column5->PutFilterType(EXG2ANTTLib::exFilter);
	var_Column5->PutFilter(L"Item A|Item B");
spG2antt1->GetColumns()->GetItem(long(2))->PutFilter(L"1");
spG2antt1->ApplyFilter();
spG2antt1->EndUpdate();

2017
FilterBarCaption ALLUI Keyword ( sample 2, result )

// AddItem event - Occurs after a new Item has been inserted to Items collection.
void OnAddItemG2antt1(long   Item)
{
	/*
		Copy and paste the following directives to your header file as
		it defines the namespace 'EXG2ANTTLib' for the library: 'ExG2antt 1.0 Control Library'
		#import <ExG2antt.dll>
		using namespace EXG2ANTTLib;
	*/
	EXG2ANTTLib::IG2anttPtr spG2antt1 = GetDlgItem(IDC_G2ANTT1)->GetControlUnknown();
	_variant_t i = spG2antt1->FormatABC(L"value + 1",spG2antt1->GetItems()->GetItemToIndex(Item),vtMissing,vtMissing);
	spG2antt1->GetItems()->PutCellImage(Item,long(3),i);
	spG2antt1->GetItems()->AddBar(Item,"Task",COleDateTime(2017,12,4,0,00,00).operator DATE(),COleDateTime(2017,12,14,0,00,00).operator DATE(),vtMissing,vtMissing);
}

EXG2ANTTLib::IG2anttPtr spG2antt1 = GetDlgItem(IDC_G2ANTT1)->GetControlUnknown();
spG2antt1->BeginUpdate();
EXG2ANTTLib::IChartPtr var_Chart = spG2antt1->GetChart();
	var_Chart->PutLevelCount(2);
	var_Chart->PutFirstVisibleDate(COleDateTime(2017,12,2,0,00,00).operator DATE());
	var_Chart->PutPaneWidth(VARIANT_FALSE,256);
spG2antt1->Images(_bstr_t("gBJJgBAIDAAGAAEAAQhYAf8Pf4hh0QihCJo2AEZjQAjEZFEaIEaEEaAIAkcbk0olUrlktl0vmExmUzmk1m03nE5nU7nk9n0/oFBoVDolFo1HpFJpVLplNp1PqFRqVTq") +
"lVq1XrFZrVbrldr1fsFhsVjslls1ntFptVrtltt1vuFxuVzul1u13vF5vV7vl9v1/wGBwWDwmFw2HxGJxWLxmNx0xiFdyOTh8Tf9ZymXx+QytcyNgz8r0OblWjyWds+m" +
"0ka1Vf1ta1+r1mos2xrG2xeZ0+a0W0qOx3GO4NV3WeyvD2XJ5XL5nN51aiw+lfSj0gkUkAEllHanHI5j/cHg8EZf7w8vl8j4f/qfEZeB09/vjLAB30+kZQAP/P5/H6/y" +
"NAOAEAwCjMBwFAEDwJBMDwLBYAP2/8Hv8/gAGAD8LQs9w/nhDY/oygIA=");
EXG2ANTTLib::IColumnPtr var_Column = ((EXG2ANTTLib::IColumnPtr)(spG2antt1->GetColumns()->Add(L"Col-1")));
	var_Column->PutDisplayFilterButton(VARIANT_TRUE);
	var_Column->PutFilterList(EXG2ANTTLib::FilterListEnum(EXG2ANTTLib::exShowExclude | EXG2ANTTLib::exShowFocusItem | EXG2ANTTLib::exShowCheckBox | EXG2ANTTLib::exSortItemsAsc));
EXG2ANTTLib::IColumnPtr var_Column1 = ((EXG2ANTTLib::IColumnPtr)(spG2antt1->GetColumns()->Add(L"Col-2")));
	var_Column1->PutDisplayFilterButton(VARIANT_TRUE);
	var_Column1->PutFilterList(EXG2ANTTLib::FilterListEnum(EXG2ANTTLib::exShowExclude | EXG2ANTTLib::exShowFocusItem | EXG2ANTTLib::exShowCheckBox | EXG2ANTTLib::exSortItemsAsc));
EXG2ANTTLib::IColumnPtr var_Column2 = ((EXG2ANTTLib::IColumnPtr)(spG2antt1->GetColumns()->Add(L"Check")));
	EXG2ANTTLib::IEditorPtr var_Editor = var_Column2->GetEditor();
		var_Editor->PutEditType(EXG2ANTTLib::CheckValueType);
		var_Editor->PutOption(EXG2ANTTLib::exCheckValue2,long(1));
	var_Column2->PutDisplayFilterButton(VARIANT_TRUE);
	var_Column2->PutDisplayFilterPattern(VARIANT_FALSE);
	var_Column2->PutFilterType(EXG2ANTTLib::exCheck);
EXG2ANTTLib::IColumnPtr var_Column3 = ((EXG2ANTTLib::IColumnPtr)(spG2antt1->GetColumns()->Add(L"Image")));
	var_Column3->PutDisplayFilterButton(VARIANT_TRUE);
	var_Column3->PutFilterType(EXG2ANTTLib::exImage);
	var_Column3->PutFilterList(EXG2ANTTLib::FilterListEnum(EXG2ANTTLib::exShowExclude | EXG2ANTTLib::exShowFocusItem | EXG2ANTTLib::exShowCheckBox));
EXG2ANTTLib::IColumnPtr var_Column4 = ((EXG2ANTTLib::IColumnPtr)(spG2antt1->GetColumns()->Add(L"Pos")));
	var_Column4->PutAllowSizing(VARIANT_FALSE);
	var_Column4->PutAllowSort(VARIANT_FALSE);
	var_Column4->PutWidth(32);
	var_Column4->PutFormatColumn(L"1 apos ``");
	var_Column4->PutPosition(0);
EXG2ANTTLib::IItemsPtr var_Items = spG2antt1->GetItems();
	var_Items->PutCellValue(var_Items->AddItem("Item A"),long(1),"Sub-Item A");
	long h = var_Items->AddItem("Item B");
	var_Items->PutCellValue(h,long(1),"Sub-Item B");
	var_Items->PutCellState(h,long(2),1);
	var_Items->PutCellValue(var_Items->AddItem("Item C"),long(1),"Sub-Item C");
/*
	Copy and paste the following directives to your header file as
	it defines the namespace 'stdole' for the library: 'OLE Automation'

	#import <stdole2.tlb>
*/
spG2antt1->PutFilterBarFont(IFontDispPtr(((stdole::FontPtr)(spG2antt1->GetFont()))));
spG2antt1->PutDescription(EXG2ANTTLib::exFilterBarAnd,_bstr_t(spG2antt1->FormatABC(L"`<fgcolor=808080> ` + value + ` </fgcolor>`",spG2antt1->GetDescription(EXG2ANTTLib::exFilterBarAnd),vtMissing,vtMissing)));
spG2antt1->PutFilterBarCaption(_bstr_t("(( ( allui replace `[<b>` with `<bgcolor=000000><fgcolor=FFFFFF><b> ` replace `</b>]` with ` </b></bgcolor></fgcolor>` replace ") +
"`[<s>` with `<bgcolor=C0C0C0><fgcolor=FFFFFF> ` replace `</s>]` with ` </fgcolor></bgcolor>` )  + `<r><fgcolor=808080>` + ( matc" +
"hitemcount < 0 ? ( ( len(value) ? `` : `` ) + `<r>` + abs(matchitemcount + 1) + ` result(s)` ) : (`<r><fgcolor=808080>`+ itemcou" +
"nt + ` item(s)`) )))");
spG2antt1->PutFilterBarPromptVisible(EXG2ANTTLib::FilterBarVisibleEnum(EXG2ANTTLib::exFilterBarVisible | EXG2ANTTLib::exFilterBarPromptVisible));
EXG2ANTTLib::IColumnPtr var_Column5 = spG2antt1->GetColumns()->GetItem(long(0));
	var_Column5->PutFilterType(EXG2ANTTLib::exFilter);
	var_Column5->PutFilter(L"Item A|Item B");
spG2antt1->GetColumns()->GetItem(long(2))->PutFilter(L"1");
spG2antt1->ApplyFilter();
spG2antt1->EndUpdate();

2016
FilterBarCaption ALLUI Keyword ( sample 1 )

// AddItem event - Occurs after a new Item has been inserted to Items collection.
void OnAddItemG2antt1(long   Item)
{
	/*
		Copy and paste the following directives to your header file as
		it defines the namespace 'EXG2ANTTLib' for the library: 'ExG2antt 1.0 Control Library'
		#import <ExG2antt.dll>
		using namespace EXG2ANTTLib;
	*/
	EXG2ANTTLib::IG2anttPtr spG2antt1 = GetDlgItem(IDC_G2ANTT1)->GetControlUnknown();
	_variant_t i = spG2antt1->FormatABC(L"value + 1",spG2antt1->GetItems()->GetItemToIndex(Item),vtMissing,vtMissing);
	spG2antt1->GetItems()->PutCellImage(Item,long(3),i);
	spG2antt1->GetItems()->AddBar(Item,"Task",COleDateTime(2017,12,4,0,00,00).operator DATE(),COleDateTime(2017,12,14,0,00,00).operator DATE(),vtMissing,vtMissing);
}

EXG2ANTTLib::IG2anttPtr spG2antt1 = GetDlgItem(IDC_G2ANTT1)->GetControlUnknown();
spG2antt1->BeginUpdate();
EXG2ANTTLib::IChartPtr var_Chart = spG2antt1->GetChart();
	var_Chart->PutLevelCount(2);
	var_Chart->PutFirstVisibleDate(COleDateTime(2017,12,2,0,00,00).operator DATE());
	var_Chart->PutPaneWidth(VARIANT_FALSE,256);
spG2antt1->Images(_bstr_t("gBJJgBAIDAAGAAEAAQhYAf8Pf4hh0QihCJo2AEZjQAjEZFEaIEaEEaAIAkcbk0olUrlktl0vmExmUzmk1m03nE5nU7nk9n0/oFBoVDolFo1HpFJpVLplNp1PqFRqVTq") +
"lVq1XrFZrVbrldr1fsFhsVjslls1ntFptVrtltt1vuFxuVzul1u13vF5vV7vl9v1/wGBwWDwmFw2HxGJxWLxmNx0xiFdyOTh8Tf9ZymXx+QytcyNgz8r0OblWjyWds+m" +
"0ka1Vf1ta1+r1mos2xrG2xeZ0+a0W0qOx3GO4NV3WeyvD2XJ5XL5nN51aiw+lfSj0gkUkAEllHanHI5j/cHg8EZf7w8vl8j4f/qfEZeB09/vjLAB30+kZQAP/P5/H6/y" +
"NAOAEAwCjMBwFAEDwJBMDwLBYAP2/8Hv8/gAGAD8LQs9w/nhDY/oygIA=");
EXG2ANTTLib::IColumnPtr var_Column = ((EXG2ANTTLib::IColumnPtr)(spG2antt1->GetColumns()->Add(L"Col-1")));
	var_Column->PutDisplayFilterButton(VARIANT_TRUE);
	var_Column->PutFilterList(EXG2ANTTLib::FilterListEnum(EXG2ANTTLib::exShowExclude | EXG2ANTTLib::exShowFocusItem | EXG2ANTTLib::exShowCheckBox | EXG2ANTTLib::exSortItemsAsc));
EXG2ANTTLib::IColumnPtr var_Column1 = ((EXG2ANTTLib::IColumnPtr)(spG2antt1->GetColumns()->Add(L"Col-2")));
	var_Column1->PutDisplayFilterButton(VARIANT_TRUE);
	var_Column1->PutFilterList(EXG2ANTTLib::FilterListEnum(EXG2ANTTLib::exShowExclude | EXG2ANTTLib::exShowFocusItem | EXG2ANTTLib::exShowCheckBox | EXG2ANTTLib::exSortItemsAsc));
EXG2ANTTLib::IColumnPtr var_Column2 = ((EXG2ANTTLib::IColumnPtr)(spG2antt1->GetColumns()->Add(L"Check")));
	EXG2ANTTLib::IEditorPtr var_Editor = var_Column2->GetEditor();
		var_Editor->PutEditType(EXG2ANTTLib::CheckValueType);
		var_Editor->PutOption(EXG2ANTTLib::exCheckValue2,long(1));
	var_Column2->PutDisplayFilterButton(VARIANT_TRUE);
	var_Column2->PutDisplayFilterPattern(VARIANT_FALSE);
	var_Column2->PutFilterType(EXG2ANTTLib::exCheck);
EXG2ANTTLib::IColumnPtr var_Column3 = ((EXG2ANTTLib::IColumnPtr)(spG2antt1->GetColumns()->Add(L"Image")));
	var_Column3->PutDisplayFilterButton(VARIANT_TRUE);
	var_Column3->PutFilterType(EXG2ANTTLib::exImage);
	var_Column3->PutFilterList(EXG2ANTTLib::FilterListEnum(EXG2ANTTLib::exShowExclude | EXG2ANTTLib::exShowFocusItem | EXG2ANTTLib::exShowCheckBox));
EXG2ANTTLib::IColumnPtr var_Column4 = ((EXG2ANTTLib::IColumnPtr)(spG2antt1->GetColumns()->Add(L"Pos")));
	var_Column4->PutAllowSizing(VARIANT_FALSE);
	var_Column4->PutAllowSort(VARIANT_FALSE);
	var_Column4->PutWidth(32);
	var_Column4->PutFormatColumn(L"1 apos ``");
	var_Column4->PutPosition(0);
EXG2ANTTLib::IItemsPtr var_Items = spG2antt1->GetItems();
	var_Items->PutCellValue(var_Items->AddItem("Item A"),long(1),"Sub-Item A");
	long h = var_Items->AddItem("Item B");
	var_Items->PutCellValue(h,long(1),"Sub-Item B");
	var_Items->PutCellState(h,long(2),1);
	var_Items->PutCellValue(var_Items->AddItem("Item C"),long(1),"Sub-Item C");
/*
	Copy and paste the following directives to your header file as
	it defines the namespace 'stdole' for the library: 'OLE Automation'

	#import <stdole2.tlb>
*/
spG2antt1->PutFilterBarFont(IFontDispPtr(((stdole::FontPtr)(spG2antt1->GetFont()))));
spG2antt1->PutDescription(EXG2ANTTLib::exFilterBarAnd,_bstr_t(spG2antt1->FormatABC(L"`<fgcolor=808080> ` + value + ` </fgcolor>`",spG2antt1->GetDescription(EXG2ANTTLib::exFilterBarAnd),vtMissing,vtMissing)));
spG2antt1->PutFilterBarCaption(L"allui");
spG2antt1->PutFilterBarPromptVisible(EXG2ANTTLib::FilterBarVisibleEnum(EXG2ANTTLib::exFilterBarVisible | EXG2ANTTLib::exFilterBarPromptVisible));
EXG2ANTTLib::IColumnPtr var_Column5 = spG2antt1->GetColumns()->GetItem(long(0));
	var_Column5->PutFilterType(EXG2ANTTLib::exFilter);
	var_Column5->PutFilter(L"Item A|Item B");
spG2antt1->GetColumns()->GetItem(long(2))->PutFilter(L"1");
spG2antt1->ApplyFilter();
spG2antt1->EndUpdate();

2015
FilterBarCaption AVAILABLE Keyword ( sample 2, result )

// AddItem event - Occurs after a new Item has been inserted to Items collection.
void OnAddItemG2antt1(long   Item)
{
	/*
		Copy and paste the following directives to your header file as
		it defines the namespace 'EXG2ANTTLib' for the library: 'ExG2antt 1.0 Control Library'
		#import <ExG2antt.dll>
		using namespace EXG2ANTTLib;
	*/
	EXG2ANTTLib::IG2anttPtr spG2antt1 = GetDlgItem(IDC_G2ANTT1)->GetControlUnknown();
	_variant_t i = spG2antt1->FormatABC(L"value + 1",spG2antt1->GetItems()->GetItemToIndex(Item),vtMissing,vtMissing);
	spG2antt1->GetItems()->PutCellImage(Item,long(3),i);
	spG2antt1->GetItems()->AddBar(Item,"Task",COleDateTime(2017,12,4,0,00,00).operator DATE(),COleDateTime(2017,12,14,0,00,00).operator DATE(),vtMissing,vtMissing);
}

EXG2ANTTLib::IG2anttPtr spG2antt1 = GetDlgItem(IDC_G2ANTT1)->GetControlUnknown();
spG2antt1->BeginUpdate();
EXG2ANTTLib::IChartPtr var_Chart = spG2antt1->GetChart();
	var_Chart->PutLevelCount(2);
	var_Chart->PutFirstVisibleDate(COleDateTime(2017,12,2,0,00,00).operator DATE());
	var_Chart->PutPaneWidth(VARIANT_FALSE,256);
spG2antt1->Images(_bstr_t("gBJJgBAIDAAGAAEAAQhYAf8Pf4hh0QihCJo2AEZjQAjEZFEaIEaEEaAIAkcbk0olUrlktl0vmExmUzmk1m03nE5nU7nk9n0/oFBoVDolFo1HpFJpVLplNp1PqFRqVTq") +
"lVq1XrFZrVbrldr1fsFhsVjslls1ntFptVrtltt1vuFxuVzul1u13vF5vV7vl9v1/wGBwWDwmFw2HxGJxWLxmNx0xiFdyOTh8Tf9ZymXx+QytcyNgz8r0OblWjyWds+m" +
"0ka1Vf1ta1+r1mos2xrG2xeZ0+a0W0qOx3GO4NV3WeyvD2XJ5XL5nN51aiw+lfSj0gkUkAEllHanHI5j/cHg8EZf7w8vl8j4f/qfEZeB09/vjLAB30+kZQAP/P5/H6/y" +
"NAOAEAwCjMBwFAEDwJBMDwLBYAP2/8Hv8/gAGAD8LQs9w/nhDY/oygIA=");
EXG2ANTTLib::IColumnPtr var_Column = ((EXG2ANTTLib::IColumnPtr)(spG2antt1->GetColumns()->Add(L"Col-1")));
	var_Column->PutDisplayFilterButton(VARIANT_TRUE);
	var_Column->PutFilterList(EXG2ANTTLib::FilterListEnum(EXG2ANTTLib::exShowExclude | EXG2ANTTLib::exShowFocusItem | EXG2ANTTLib::exShowCheckBox | EXG2ANTTLib::exSortItemsAsc));
EXG2ANTTLib::IColumnPtr var_Column1 = ((EXG2ANTTLib::IColumnPtr)(spG2antt1->GetColumns()->Add(L"Col-2")));
	var_Column1->PutDisplayFilterButton(VARIANT_TRUE);
	var_Column1->PutFilterList(EXG2ANTTLib::FilterListEnum(EXG2ANTTLib::exShowExclude | EXG2ANTTLib::exShowFocusItem | EXG2ANTTLib::exShowCheckBox | EXG2ANTTLib::exSortItemsAsc));
EXG2ANTTLib::IColumnPtr var_Column2 = ((EXG2ANTTLib::IColumnPtr)(spG2antt1->GetColumns()->Add(L"Check")));
	EXG2ANTTLib::IEditorPtr var_Editor = var_Column2->GetEditor();
		var_Editor->PutEditType(EXG2ANTTLib::CheckValueType);
		var_Editor->PutOption(EXG2ANTTLib::exCheckValue2,long(1));
	var_Column2->PutDisplayFilterButton(VARIANT_TRUE);
	var_Column2->PutDisplayFilterPattern(VARIANT_FALSE);
	var_Column2->PutFilterType(EXG2ANTTLib::exCheck);
EXG2ANTTLib::IColumnPtr var_Column3 = ((EXG2ANTTLib::IColumnPtr)(spG2antt1->GetColumns()->Add(L"Image")));
	var_Column3->PutDisplayFilterButton(VARIANT_TRUE);
	var_Column3->PutFilterType(EXG2ANTTLib::exImage);
	var_Column3->PutFilterList(EXG2ANTTLib::FilterListEnum(EXG2ANTTLib::exShowExclude | EXG2ANTTLib::exShowFocusItem | EXG2ANTTLib::exShowCheckBox));
EXG2ANTTLib::IColumnPtr var_Column4 = ((EXG2ANTTLib::IColumnPtr)(spG2antt1->GetColumns()->Add(L"Pos")));
	var_Column4->PutAllowSizing(VARIANT_FALSE);
	var_Column4->PutAllowSort(VARIANT_FALSE);
	var_Column4->PutWidth(32);
	var_Column4->PutFormatColumn(L"1 apos ``");
	var_Column4->PutPosition(0);
EXG2ANTTLib::IItemsPtr var_Items = spG2antt1->GetItems();
	var_Items->PutCellValue(var_Items->AddItem("Item A"),long(1),"Sub-Item A");
	long h = var_Items->AddItem("Item B");
	var_Items->PutCellValue(h,long(1),"Sub-Item B");
	var_Items->PutCellState(h,long(2),1);
	var_Items->PutCellValue(var_Items->AddItem("Item C"),long(1),"Sub-Item C");
/*
	Copy and paste the following directives to your header file as
	it defines the namespace 'stdole' for the library: 'OLE Automation'

	#import <stdole2.tlb>
*/
spG2antt1->PutFilterBarFont(IFontDispPtr(((stdole::FontPtr)(spG2antt1->GetFont()))));
spG2antt1->PutDescription(EXG2ANTTLib::exFilterBarAnd,_bstr_t(spG2antt1->FormatABC(L"`<fgcolor=808080> ` + value + ` </fgcolor>`",spG2antt1->GetDescription(EXG2ANTTLib::exFilterBarAnd),vtMissing,vtMissing)));
spG2antt1->PutFilterBarCaption(_bstr_t("(( ( value replace `[` with `<bgcolor=000000><fgcolor=FFFFFF><b> ` replace `]` with ` </b></bgcolor></fgcolor>` ) + ` ` + ( ava") +
"ilable replace `[` with `<bgcolor=C0C0C0><fgcolor=FFFFFF><b> ` replace `]` with ` </b></bgcolor></fgcolor>` replace `<s>` with `" +
"` replace `</s>` with `` ) + `<fgcolor=808080>` + ( matchitemcount < 0 ? ( ( len(value) ? `` : `` ) + `<r>` + abs(matchitemcount" +
" + 1) + ` result(s)` ) : (`<r><fgcolor=808080>`+ itemcount + ` item(s)`) )))");
spG2antt1->PutFilterBarPromptVisible(EXG2ANTTLib::FilterBarVisibleEnum(EXG2ANTTLib::exFilterBarVisible | EXG2ANTTLib::exFilterBarPromptVisible));
EXG2ANTTLib::IColumnPtr var_Column5 = spG2antt1->GetColumns()->GetItem(long(0));
	var_Column5->PutFilterType(EXG2ANTTLib::exFilter);
	var_Column5->PutFilter(L"Item A|Item B");
spG2antt1->GetColumns()->GetItem(long(2))->PutFilter(L"1");
spG2antt1->ApplyFilter();
spG2antt1->EndUpdate();

2014
FilterBarCaption AVAILABLE Keyword ( sample 1 )

// AddItem event - Occurs after a new Item has been inserted to Items collection.
void OnAddItemG2antt1(long   Item)
{
	/*
		Copy and paste the following directives to your header file as
		it defines the namespace 'EXG2ANTTLib' for the library: 'ExG2antt 1.0 Control Library'
		#import <ExG2antt.dll>
		using namespace EXG2ANTTLib;
	*/
	EXG2ANTTLib::IG2anttPtr spG2antt1 = GetDlgItem(IDC_G2ANTT1)->GetControlUnknown();
	_variant_t i = spG2antt1->FormatABC(L"value + 1",spG2antt1->GetItems()->GetItemToIndex(Item),vtMissing,vtMissing);
	spG2antt1->GetItems()->PutCellImage(Item,long(3),i);
	spG2antt1->GetItems()->AddBar(Item,"Task",COleDateTime(2017,12,4,0,00,00).operator DATE(),COleDateTime(2017,12,14,0,00,00).operator DATE(),vtMissing,vtMissing);
}

EXG2ANTTLib::IG2anttPtr spG2antt1 = GetDlgItem(IDC_G2ANTT1)->GetControlUnknown();
spG2antt1->BeginUpdate();
EXG2ANTTLib::IChartPtr var_Chart = spG2antt1->GetChart();
	var_Chart->PutLevelCount(2);
	var_Chart->PutFirstVisibleDate(COleDateTime(2017,12,2,0,00,00).operator DATE());
	var_Chart->PutPaneWidth(VARIANT_FALSE,256);
spG2antt1->Images(_bstr_t("gBJJgBAIDAAGAAEAAQhYAf8Pf4hh0QihCJo2AEZjQAjEZFEaIEaEEaAIAkcbk0olUrlktl0vmExmUzmk1m03nE5nU7nk9n0/oFBoVDolFo1HpFJpVLplNp1PqFRqVTq") +
"lVq1XrFZrVbrldr1fsFhsVjslls1ntFptVrtltt1vuFxuVzul1u13vF5vV7vl9v1/wGBwWDwmFw2HxGJxWLxmNx0xiFdyOTh8Tf9ZymXx+QytcyNgz8r0OblWjyWds+m" +
"0ka1Vf1ta1+r1mos2xrG2xeZ0+a0W0qOx3GO4NV3WeyvD2XJ5XL5nN51aiw+lfSj0gkUkAEllHanHI5j/cHg8EZf7w8vl8j4f/qfEZeB09/vjLAB30+kZQAP/P5/H6/y" +
"NAOAEAwCjMBwFAEDwJBMDwLBYAP2/8Hv8/gAGAD8LQs9w/nhDY/oygIA=");
EXG2ANTTLib::IColumnPtr var_Column = ((EXG2ANTTLib::IColumnPtr)(spG2antt1->GetColumns()->Add(L"Col-1")));
	var_Column->PutDisplayFilterButton(VARIANT_TRUE);
	var_Column->PutFilterList(EXG2ANTTLib::FilterListEnum(EXG2ANTTLib::exShowExclude | EXG2ANTTLib::exShowFocusItem | EXG2ANTTLib::exShowCheckBox | EXG2ANTTLib::exSortItemsAsc));
EXG2ANTTLib::IColumnPtr var_Column1 = ((EXG2ANTTLib::IColumnPtr)(spG2antt1->GetColumns()->Add(L"Col-2")));
	var_Column1->PutDisplayFilterButton(VARIANT_TRUE);
	var_Column1->PutFilterList(EXG2ANTTLib::FilterListEnum(EXG2ANTTLib::exShowExclude | EXG2ANTTLib::exShowFocusItem | EXG2ANTTLib::exShowCheckBox | EXG2ANTTLib::exSortItemsAsc));
EXG2ANTTLib::IColumnPtr var_Column2 = ((EXG2ANTTLib::IColumnPtr)(spG2antt1->GetColumns()->Add(L"Check")));
	EXG2ANTTLib::IEditorPtr var_Editor = var_Column2->GetEditor();
		var_Editor->PutEditType(EXG2ANTTLib::CheckValueType);
		var_Editor->PutOption(EXG2ANTTLib::exCheckValue2,long(1));
	var_Column2->PutDisplayFilterButton(VARIANT_TRUE);
	var_Column2->PutDisplayFilterPattern(VARIANT_FALSE);
	var_Column2->PutFilterType(EXG2ANTTLib::exCheck);
EXG2ANTTLib::IColumnPtr var_Column3 = ((EXG2ANTTLib::IColumnPtr)(spG2antt1->GetColumns()->Add(L"Image")));
	var_Column3->PutDisplayFilterButton(VARIANT_TRUE);
	var_Column3->PutFilterType(EXG2ANTTLib::exImage);
	var_Column3->PutFilterList(EXG2ANTTLib::FilterListEnum(EXG2ANTTLib::exShowExclude | EXG2ANTTLib::exShowFocusItem | EXG2ANTTLib::exShowCheckBox));
EXG2ANTTLib::IColumnPtr var_Column4 = ((EXG2ANTTLib::IColumnPtr)(spG2antt1->GetColumns()->Add(L"Pos")));
	var_Column4->PutAllowSizing(VARIANT_FALSE);
	var_Column4->PutAllowSort(VARIANT_FALSE);
	var_Column4->PutWidth(32);
	var_Column4->PutFormatColumn(L"1 apos ``");
	var_Column4->PutPosition(0);
EXG2ANTTLib::IItemsPtr var_Items = spG2antt1->GetItems();
	var_Items->PutCellValue(var_Items->AddItem("Item A"),long(1),"Sub-Item A");
	long h = var_Items->AddItem("Item B");
	var_Items->PutCellValue(h,long(1),"Sub-Item B");
	var_Items->PutCellState(h,long(2),1);
	var_Items->PutCellValue(var_Items->AddItem("Item C"),long(1),"Sub-Item C");
/*
	Copy and paste the following directives to your header file as
	it defines the namespace 'stdole' for the library: 'OLE Automation'

	#import <stdole2.tlb>
*/
spG2antt1->PutFilterBarFont(IFontDispPtr(((stdole::FontPtr)(spG2antt1->GetFont()))));
spG2antt1->PutDescription(EXG2ANTTLib::exFilterBarAnd,_bstr_t(spG2antt1->FormatABC(L"`<fgcolor=808080> ` + value + ` </fgcolor>`",spG2antt1->GetDescription(EXG2ANTTLib::exFilterBarAnd),vtMissing,vtMissing)));
spG2antt1->PutFilterBarCaption(L"value + ` ` + available");
spG2antt1->PutFilterBarPromptVisible(EXG2ANTTLib::FilterBarVisibleEnum(EXG2ANTTLib::exFilterBarVisible | EXG2ANTTLib::exFilterBarPromptVisible));
EXG2ANTTLib::IColumnPtr var_Column5 = spG2antt1->GetColumns()->GetItem(long(0));
	var_Column5->PutFilterType(EXG2ANTTLib::exFilter);
	var_Column5->PutFilter(L"Item A|Item B");
spG2antt1->GetColumns()->GetItem(long(2))->PutFilter(L"1");
spG2antt1->ApplyFilter();
spG2antt1->EndUpdate();

2013
Is it possible to somehow highlight the column's name different than its filter value in the control's filter bar ( sample 3, results )

// AddItem event - Occurs after a new Item has been inserted to Items collection.
void OnAddItemG2antt1(long   Item)
{
	/*
		Copy and paste the following directives to your header file as
		it defines the namespace 'EXG2ANTTLib' for the library: 'ExG2antt 1.0 Control Library'
		#import <ExG2antt.dll>
		using namespace EXG2ANTTLib;
	*/
	EXG2ANTTLib::IG2anttPtr spG2antt1 = GetDlgItem(IDC_G2ANTT1)->GetControlUnknown();
	spG2antt1->GetItems()->AddBar(Item,"Task",COleDateTime(2017,12,4,0,00,00).operator DATE(),COleDateTime(2017,12,14,0,00,00).operator DATE(),vtMissing,vtMissing);
}

EXG2ANTTLib::IG2anttPtr spG2antt1 = GetDlgItem(IDC_G2ANTT1)->GetControlUnknown();
spG2antt1->BeginUpdate();
EXG2ANTTLib::IChartPtr var_Chart = spG2antt1->GetChart();
	var_Chart->PutLevelCount(2);
	var_Chart->PutFirstVisibleDate(COleDateTime(2017,12,2,0,00,00).operator DATE());
	var_Chart->PutPaneWidth(VARIANT_FALSE,256);
EXG2ANTTLib::IColumnPtr var_Column = ((EXG2ANTTLib::IColumnPtr)(spG2antt1->GetColumns()->Add(L"Col-1")));
	var_Column->PutDisplayFilterButton(VARIANT_TRUE);
	var_Column->PutFilterList(EXG2ANTTLib::FilterListEnum(EXG2ANTTLib::exShowExclude | EXG2ANTTLib::exShowFocusItem | EXG2ANTTLib::exShowCheckBox | EXG2ANTTLib::exSortItemsAsc));
EXG2ANTTLib::IColumnPtr var_Column1 = ((EXG2ANTTLib::IColumnPtr)(spG2antt1->GetColumns()->Add(L"Col-2")));
	var_Column1->PutDisplayFilterButton(VARIANT_TRUE);
	var_Column1->PutFilterList(EXG2ANTTLib::FilterListEnum(EXG2ANTTLib::exShowExclude | EXG2ANTTLib::exShowFocusItem | EXG2ANTTLib::exShowCheckBox | EXG2ANTTLib::exSortItemsAsc));
EXG2ANTTLib::IColumnPtr var_Column2 = ((EXG2ANTTLib::IColumnPtr)(spG2antt1->GetColumns()->Add(L"Pos")));
	var_Column2->PutAllowSizing(VARIANT_FALSE);
	var_Column2->PutAllowSort(VARIANT_FALSE);
	var_Column2->PutWidth(32);
	var_Column2->PutFormatColumn(L"1 apos ``");
	var_Column2->PutPosition(0);
EXG2ANTTLib::IItemsPtr var_Items = spG2antt1->GetItems();
	var_Items->PutCellValue(var_Items->AddItem("Item A"),long(1),"Sub-Item A");
	var_Items->PutCellValue(var_Items->AddItem("Item B"),long(1),"Sub-Item B");
	var_Items->PutCellValue(var_Items->AddItem("Item C"),long(1),"Sub-Item C");
/*
	Copy and paste the following directives to your header file as
	it defines the namespace 'stdole' for the library: 'OLE Automation'

	#import <stdole2.tlb>
*/
spG2antt1->PutFilterBarFont(IFontDispPtr(((stdole::FontPtr)(spG2antt1->GetFont()))));
spG2antt1->PutDescription(EXG2ANTTLib::exFilterBarAnd,_bstr_t(spG2antt1->FormatABC(L"`<fgcolor=808080>` + value + `</fgcolor>`",spG2antt1->GetDescription(EXG2ANTTLib::exFilterBarAnd),vtMissing,vtMissing)));
spG2antt1->PutFilterBarCaption(_bstr_t("(`<b>` + value + `</b><fgcolor=808080>` + ( matchitemcount < 0 ? ( ( len(value) ? `` : `` ) + `<r>` + abs(matchitemcount + 1) +") +
" ` result(s)` ) : (`<fgcolor=808080>`+ itemcount + ` item(s)`) )) replace `[` with `<bgcolor=000000><fgcolor=FFFFFF><b> ` replac" +
"e `]` with ` </b></bgcolor></fgcolor>`");
spG2antt1->PutFilterBarPromptVisible(EXG2ANTTLib::exFilterBarToggle);
EXG2ANTTLib::IColumnPtr var_Column3 = spG2antt1->GetColumns()->GetItem(long(0));
	var_Column3->PutFilterType(EXG2ANTTLib::exFilter);
	var_Column3->PutFilter(L"Item A|Item B");
EXG2ANTTLib::IColumnPtr var_Column4 = spG2antt1->GetColumns()->GetItem(long(1));
	var_Column4->PutFilterType(EXG2ANTTLib::exPattern);
	var_Column4->PutFilter(L"*B");
spG2antt1->ApplyFilter();
spG2antt1->EndUpdate();

2012
Is it possible to somehow highlight the column's name different than its filter value in the control's filter bar ( sample 2 )

// AddItem event - Occurs after a new Item has been inserted to Items collection.
void OnAddItemG2antt1(long   Item)
{
	/*
		Copy and paste the following directives to your header file as
		it defines the namespace 'EXG2ANTTLib' for the library: 'ExG2antt 1.0 Control Library'
		#import <ExG2antt.dll>
		using namespace EXG2ANTTLib;
	*/
	EXG2ANTTLib::IG2anttPtr spG2antt1 = GetDlgItem(IDC_G2ANTT1)->GetControlUnknown();
	spG2antt1->GetItems()->AddBar(Item,"Task",COleDateTime(2017,12,4,0,00,00).operator DATE(),COleDateTime(2017,12,14,0,00,00).operator DATE(),vtMissing,vtMissing);
}

EXG2ANTTLib::IG2anttPtr spG2antt1 = GetDlgItem(IDC_G2ANTT1)->GetControlUnknown();
spG2antt1->BeginUpdate();
EXG2ANTTLib::IChartPtr var_Chart = spG2antt1->GetChart();
	var_Chart->PutLevelCount(2);
	var_Chart->PutFirstVisibleDate(COleDateTime(2017,12,2,0,00,00).operator DATE());
	var_Chart->PutPaneWidth(VARIANT_FALSE,256);
EXG2ANTTLib::IColumnPtr var_Column = ((EXG2ANTTLib::IColumnPtr)(spG2antt1->GetColumns()->Add(L"Col-1")));
	var_Column->PutDisplayFilterButton(VARIANT_TRUE);
	var_Column->PutFilterList(EXG2ANTTLib::FilterListEnum(EXG2ANTTLib::exShowExclude | EXG2ANTTLib::exShowFocusItem | EXG2ANTTLib::exShowCheckBox | EXG2ANTTLib::exSortItemsAsc));
EXG2ANTTLib::IColumnPtr var_Column1 = ((EXG2ANTTLib::IColumnPtr)(spG2antt1->GetColumns()->Add(L"Col-2")));
	var_Column1->PutDisplayFilterButton(VARIANT_TRUE);
	var_Column1->PutFilterList(EXG2ANTTLib::FilterListEnum(EXG2ANTTLib::exShowExclude | EXG2ANTTLib::exShowFocusItem | EXG2ANTTLib::exShowCheckBox | EXG2ANTTLib::exSortItemsAsc));
EXG2ANTTLib::IColumnPtr var_Column2 = ((EXG2ANTTLib::IColumnPtr)(spG2antt1->GetColumns()->Add(L"Pos")));
	var_Column2->PutAllowSizing(VARIANT_FALSE);
	var_Column2->PutAllowSort(VARIANT_FALSE);
	var_Column2->PutWidth(32);
	var_Column2->PutFormatColumn(L"1 apos ``");
	var_Column2->PutPosition(0);
EXG2ANTTLib::IItemsPtr var_Items = spG2antt1->GetItems();
	var_Items->PutCellValue(var_Items->AddItem("Item A"),long(1),"Sub-Item A");
	var_Items->PutCellValue(var_Items->AddItem("Item B"),long(1),"Sub-Item B");
	var_Items->PutCellValue(var_Items->AddItem("Item C"),long(1),"Sub-Item C");
/*
	Copy and paste the following directives to your header file as
	it defines the namespace 'stdole' for the library: 'OLE Automation'

	#import <stdole2.tlb>
*/
spG2antt1->PutFilterBarFont(IFontDispPtr(((stdole::FontPtr)(spG2antt1->GetFont()))));
spG2antt1->PutDescription(EXG2ANTTLib::exFilterBarAnd,_bstr_t(spG2antt1->FormatABC(L"`<fgcolor=808080>` + value + `</fgcolor>`",spG2antt1->GetDescription(EXG2ANTTLib::exFilterBarAnd),vtMissing,vtMissing)));
spG2antt1->PutFilterBarCaption(L"value replace `[` with `<bgcolor=000000><fgcolor=FFFFFF><b> ` replace `]` with ` </b></bgcolor></fgcolor>`");
spG2antt1->PutFilterBarPromptVisible(EXG2ANTTLib::exFilterBarToggle);
EXG2ANTTLib::IColumnPtr var_Column3 = spG2antt1->GetColumns()->GetItem(long(0));
	var_Column3->PutFilterType(EXG2ANTTLib::exFilter);
	var_Column3->PutFilter(L"Item A|Item B");
EXG2ANTTLib::IColumnPtr var_Column4 = spG2antt1->GetColumns()->GetItem(long(1));
	var_Column4->PutFilterType(EXG2ANTTLib::exPattern);
	var_Column4->PutFilter(L"*B");
spG2antt1->ApplyFilter();
spG2antt1->EndUpdate();

2011
Is it possible to somehow highlight the column's name different than its filter value in the control's filter bar ( sample 1 )

// AddItem event - Occurs after a new Item has been inserted to Items collection.
void OnAddItemG2antt1(long   Item)
{
	/*
		Copy and paste the following directives to your header file as
		it defines the namespace 'EXG2ANTTLib' for the library: 'ExG2antt 1.0 Control Library'
		#import <ExG2antt.dll>
		using namespace EXG2ANTTLib;
	*/
	EXG2ANTTLib::IG2anttPtr spG2antt1 = GetDlgItem(IDC_G2ANTT1)->GetControlUnknown();
	spG2antt1->GetItems()->AddBar(Item,"Task",COleDateTime(2017,12,4,0,00,00).operator DATE(),COleDateTime(2017,12,14,0,00,00).operator DATE(),vtMissing,vtMissing);
}

EXG2ANTTLib::IG2anttPtr spG2antt1 = GetDlgItem(IDC_G2ANTT1)->GetControlUnknown();
spG2antt1->BeginUpdate();
EXG2ANTTLib::IChartPtr var_Chart = spG2antt1->GetChart();
	var_Chart->PutLevelCount(2);
	var_Chart->PutFirstVisibleDate(COleDateTime(2017,12,2,0,00,00).operator DATE());
	var_Chart->PutPaneWidth(VARIANT_FALSE,256);
EXG2ANTTLib::IColumnPtr var_Column = ((EXG2ANTTLib::IColumnPtr)(spG2antt1->GetColumns()->Add(L"Col-1")));
	var_Column->PutDisplayFilterButton(VARIANT_TRUE);
	var_Column->PutFilterList(EXG2ANTTLib::FilterListEnum(EXG2ANTTLib::exShowExclude | EXG2ANTTLib::exShowFocusItem | EXG2ANTTLib::exShowCheckBox | EXG2ANTTLib::exSortItemsAsc));
EXG2ANTTLib::IColumnPtr var_Column1 = ((EXG2ANTTLib::IColumnPtr)(spG2antt1->GetColumns()->Add(L"Col-2")));
	var_Column1->PutDisplayFilterButton(VARIANT_TRUE);
	var_Column1->PutFilterList(EXG2ANTTLib::FilterListEnum(EXG2ANTTLib::exShowExclude | EXG2ANTTLib::exShowFocusItem | EXG2ANTTLib::exShowCheckBox | EXG2ANTTLib::exSortItemsAsc));
EXG2ANTTLib::IColumnPtr var_Column2 = ((EXG2ANTTLib::IColumnPtr)(spG2antt1->GetColumns()->Add(L"Pos")));
	var_Column2->PutAllowSizing(VARIANT_FALSE);
	var_Column2->PutAllowSort(VARIANT_FALSE);
	var_Column2->PutWidth(32);
	var_Column2->PutFormatColumn(L"1 apos ``");
	var_Column2->PutPosition(0);
EXG2ANTTLib::IItemsPtr var_Items = spG2antt1->GetItems();
	var_Items->PutCellValue(var_Items->AddItem("Item A"),long(1),"Sub-Item A");
	var_Items->PutCellValue(var_Items->AddItem("Item B"),long(1),"Sub-Item B");
	var_Items->PutCellValue(var_Items->AddItem("Item C"),long(1),"Sub-Item C");
spG2antt1->PutDescription(EXG2ANTTLib::exFilterBarAnd,_bstr_t(spG2antt1->FormatABC(L"`<fgcolor=808080>` + value + `</fgcolor>`",spG2antt1->GetDescription(EXG2ANTTLib::exFilterBarAnd),vtMissing,vtMissing)));
spG2antt1->PutFilterBarCaption(L"value replace `[` with `<fgcolor=808080>[` replace `]` with `]</fgcolor>`");
spG2antt1->PutFilterBarPromptVisible(EXG2ANTTLib::exFilterBarToggle);
EXG2ANTTLib::IColumnPtr var_Column3 = spG2antt1->GetColumns()->GetItem(long(0));
	var_Column3->PutFilterType(EXG2ANTTLib::exFilter);
	var_Column3->PutFilter(L"Item A|Item B");
EXG2ANTTLib::IColumnPtr var_Column4 = spG2antt1->GetColumns()->GetItem(long(1));
	var_Column4->PutFilterType(EXG2ANTTLib::exPattern);
	var_Column4->PutFilter(L"*B");
spG2antt1->ApplyFilter();
spG2antt1->EndUpdate();

2010
Is it possible to automatically displays the control's filter label to the right

// AddItem event - Occurs after a new Item has been inserted to Items collection.
void OnAddItemG2antt1(long   Item)
{
	/*
		Copy and paste the following directives to your header file as
		it defines the namespace 'EXG2ANTTLib' for the library: 'ExG2antt 1.0 Control Library'
		#import <ExG2antt.dll>
		using namespace EXG2ANTTLib;
	*/
	EXG2ANTTLib::IG2anttPtr spG2antt1 = GetDlgItem(IDC_G2ANTT1)->GetControlUnknown();
	spG2antt1->GetItems()->AddBar(Item,"Task",COleDateTime(2017,12,4,0,00,00).operator DATE(),COleDateTime(2017,12,14,0,00,00).operator DATE(),vtMissing,vtMissing);
}

EXG2ANTTLib::IG2anttPtr spG2antt1 = GetDlgItem(IDC_G2ANTT1)->GetControlUnknown();
spG2antt1->BeginUpdate();
EXG2ANTTLib::IChartPtr var_Chart = spG2antt1->GetChart();
	var_Chart->PutLevelCount(2);
	var_Chart->PutFirstVisibleDate(COleDateTime(2017,12,2,0,00,00).operator DATE());
	var_Chart->PutPaneWidth(VARIANT_FALSE,256);
EXG2ANTTLib::IColumnPtr var_Column = ((EXG2ANTTLib::IColumnPtr)(spG2antt1->GetColumns()->Add(L"Item")));
	var_Column->PutDisplayFilterButton(VARIANT_TRUE);
	var_Column->PutFilterList(EXG2ANTTLib::FilterListEnum(EXG2ANTTLib::exShowExclude | EXG2ANTTLib::exShowFocusItem | EXG2ANTTLib::exShowCheckBox | EXG2ANTTLib::exSortItemsAsc));
EXG2ANTTLib::IColumnPtr var_Column1 = ((EXG2ANTTLib::IColumnPtr)(spG2antt1->GetColumns()->Add(L"Pos")));
	var_Column1->PutAllowSizing(VARIANT_FALSE);
	var_Column1->PutAllowSort(VARIANT_FALSE);
	var_Column1->PutWidth(32);
	var_Column1->PutFormatColumn(L"1 apos ``");
	var_Column1->PutPosition(0);
EXG2ANTTLib::IItemsPtr var_Items = spG2antt1->GetItems();
	var_Items->AddItem("Item A");
	var_Items->AddItem("Item B");
	var_Items->AddItem("Item C");
spG2antt1->PutFilterBarCaption(L"`<r>` + value");
spG2antt1->PutFilterBarPromptVisible(EXG2ANTTLib::FilterBarVisibleEnum(EXG2ANTTLib::exFilterBarShowCloseOnRight | EXG2ANTTLib::exFilterBarToggle));
EXG2ANTTLib::IColumnPtr var_Column2 = spG2antt1->GetColumns()->GetItem(long(0));
	var_Column2->PutFilterType(EXG2ANTTLib::exFilter);
	var_Column2->PutFilter(L"Item B");
spG2antt1->ApplyFilter();
spG2antt1->EndUpdate();

2009
How can I get the number of results/items being shown in the control's filter bar (sample 4)

// AddItem event - Occurs after a new Item has been inserted to Items collection.
void OnAddItemG2antt1(long   Item)
{
	/*
		Copy and paste the following directives to your header file as
		it defines the namespace 'EXG2ANTTLib' for the library: 'ExG2antt 1.0 Control Library'
		#import <ExG2antt.dll>
		using namespace EXG2ANTTLib;
	*/
	EXG2ANTTLib::IG2anttPtr spG2antt1 = GetDlgItem(IDC_G2ANTT1)->GetControlUnknown();
	spG2antt1->GetItems()->AddBar(Item,"Task",COleDateTime(2017,12,4,0,00,00).operator DATE(),COleDateTime(2017,12,14,0,00,00).operator DATE(),vtMissing,vtMissing);
}

EXG2ANTTLib::IG2anttPtr spG2antt1 = GetDlgItem(IDC_G2ANTT1)->GetControlUnknown();
spG2antt1->BeginUpdate();
EXG2ANTTLib::IChartPtr var_Chart = spG2antt1->GetChart();
	var_Chart->PutLevelCount(2);
	var_Chart->PutFirstVisibleDate(COleDateTime(2017,12,2,0,00,00).operator DATE());
	var_Chart->PutPaneWidth(VARIANT_FALSE,256);
EXG2ANTTLib::IColumnPtr var_Column = ((EXG2ANTTLib::IColumnPtr)(spG2antt1->GetColumns()->Add(L"Item")));
	var_Column->PutDisplayFilterButton(VARIANT_TRUE);
	var_Column->PutFilterList(EXG2ANTTLib::FilterListEnum(EXG2ANTTLib::exShowExclude | EXG2ANTTLib::exShowFocusItem | EXG2ANTTLib::exShowCheckBox | EXG2ANTTLib::exSortItemsAsc));
EXG2ANTTLib::IColumnPtr var_Column1 = ((EXG2ANTTLib::IColumnPtr)(spG2antt1->GetColumns()->Add(L"Pos")));
	var_Column1->PutAllowSizing(VARIANT_FALSE);
	var_Column1->PutAllowSort(VARIANT_FALSE);
	var_Column1->PutWidth(32);
	var_Column1->PutFormatColumn(L"1 apos ``");
	var_Column1->PutPosition(0);
EXG2ANTTLib::IItemsPtr var_Items = spG2antt1->GetItems();
	var_Items->AddItem("Item A");
	var_Items->AddItem("Item B");
	var_Items->AddItem("Item C");
/*
	Copy and paste the following directives to your header file as
	it defines the namespace 'stdole' for the library: 'OLE Automation'

	#import <stdole2.tlb>
*/
spG2antt1->PutFilterBarFont(IFontDispPtr(((stdole::FontPtr)(spG2antt1->GetFont()))));
spG2antt1->PutFilterBarPrompt(_bstr_t(spG2antt1->FormatABC(L"`<b>` + value",spG2antt1->GetFilterBarPrompt(),vtMissing,vtMissing)));
spG2antt1->PutFilterBarCaption(_bstr_t("`<b><r>` + value + `</b><fgcolor=808080>` + ( matchitemcount < 0 ? ( ( len(value) ? `<br>` : `` ) + `<r>` + abs(matchitemcount ") +
"+ 1) + ` result(s)` ) : (`<fgcolor=808080>`+ itemcount + ` item(s)`) )");
spG2antt1->PutFilterBarPromptVisible(EXG2ANTTLib::FilterBarVisibleEnum(EXG2ANTTLib::exFilterBarCompact | EXG2ANTTLib::exFilterBarShowCloseOnRight | EXG2ANTTLib::exFilterBarShowCloseIfRequired | EXG2ANTTLib::exFilterBarCaptionVisible | EXG2ANTTLib::exFilterBarVisible | EXG2ANTTLib::exFilterBarPromptVisible));
spG2antt1->EndUpdate();

2008
How can I get the number of results being shown in the control's filter bar (sample 3)

// AddItem event - Occurs after a new Item has been inserted to Items collection.
void OnAddItemG2antt1(long   Item)
{
	/*
		Copy and paste the following directives to your header file as
		it defines the namespace 'EXG2ANTTLib' for the library: 'ExG2antt 1.0 Control Library'
		#import <ExG2antt.dll>
		using namespace EXG2ANTTLib;
	*/
	EXG2ANTTLib::IG2anttPtr spG2antt1 = GetDlgItem(IDC_G2ANTT1)->GetControlUnknown();
	spG2antt1->GetItems()->AddBar(Item,"Task",COleDateTime(2017,12,4,0,00,00).operator DATE(),COleDateTime(2017,12,14,0,00,00).operator DATE(),vtMissing,vtMissing);
}

EXG2ANTTLib::IG2anttPtr spG2antt1 = GetDlgItem(IDC_G2ANTT1)->GetControlUnknown();
spG2antt1->BeginUpdate();
EXG2ANTTLib::IChartPtr var_Chart = spG2antt1->GetChart();
	var_Chart->PutLevelCount(2);
	var_Chart->PutFirstVisibleDate(COleDateTime(2017,12,2,0,00,00).operator DATE());
	var_Chart->PutPaneWidth(VARIANT_FALSE,256);
((EXG2ANTTLib::IColumnPtr)(spG2antt1->GetColumns()->Add(L"Item")))->PutDisplayFilterButton(VARIANT_TRUE);
EXG2ANTTLib::IColumnPtr var_Column = ((EXG2ANTTLib::IColumnPtr)(spG2antt1->GetColumns()->Add(L"Pos")));
	var_Column->PutAllowSizing(VARIANT_FALSE);
	var_Column->PutAllowSort(VARIANT_FALSE);
	var_Column->PutWidth(32);
	var_Column->PutFormatColumn(L"1 apos ``");
	var_Column->PutPosition(0);
EXG2ANTTLib::IItemsPtr var_Items = spG2antt1->GetItems();
	var_Items->AddItem("Item A");
	var_Items->AddItem("Item B");
	var_Items->AddItem("Item C");
/*
	Copy and paste the following directives to your header file as
	it defines the namespace 'stdole' for the library: 'OLE Automation'

	#import <stdole2.tlb>
*/
spG2antt1->PutFilterBarFont(IFontDispPtr(((stdole::FontPtr)(spG2antt1->GetFont()))));
spG2antt1->PutFilterBarCaption(_bstr_t("`<b><r>` + value + `</b><fgcolor=808080>` + ( matchitemcount < 0 ? ( ( len(value) ? `<br>` : `` ) + `<r>` + abs(matchitemcount ") +
"+ 1) + ` result(s)` ) : ``)");
spG2antt1->PutFilterBarPromptVisible(EXG2ANTTLib::FilterBarVisibleEnum(EXG2ANTTLib::exFilterBarCompact | EXG2ANTTLib::exFilterBarCaptionVisible | EXG2ANTTLib::exFilterBarVisible | EXG2ANTTLib::exFilterBarPromptVisible));
EXG2ANTTLib::IColumnPtr var_Column1 = spG2antt1->GetColumns()->GetItem(long(0));
	var_Column1->PutFilterType(EXG2ANTTLib::exFilter);
	var_Column1->PutFilter(L"Item A|Item B");
spG2antt1->ApplyFilter();
spG2antt1->EndUpdate();

2007
How can I get the number of results being shown in the control's filter bar (sample 2, compact)

// AddItem event - Occurs after a new Item has been inserted to Items collection.
void OnAddItemG2antt1(long   Item)
{
	/*
		Copy and paste the following directives to your header file as
		it defines the namespace 'EXG2ANTTLib' for the library: 'ExG2antt 1.0 Control Library'
		#import <ExG2antt.dll>
		using namespace EXG2ANTTLib;
	*/
	EXG2ANTTLib::IG2anttPtr spG2antt1 = GetDlgItem(IDC_G2ANTT1)->GetControlUnknown();
	spG2antt1->GetItems()->AddBar(Item,"Task",COleDateTime(2017,12,4,0,00,00).operator DATE(),COleDateTime(2017,12,14,0,00,00).operator DATE(),vtMissing,vtMissing);
}

EXG2ANTTLib::IG2anttPtr spG2antt1 = GetDlgItem(IDC_G2ANTT1)->GetControlUnknown();
spG2antt1->BeginUpdate();
EXG2ANTTLib::IChartPtr var_Chart = spG2antt1->GetChart();
	var_Chart->PutLevelCount(2);
	var_Chart->PutFirstVisibleDate(COleDateTime(2017,12,2,0,00,00).operator DATE());
	var_Chart->PutPaneWidth(VARIANT_FALSE,256);
((EXG2ANTTLib::IColumnPtr)(spG2antt1->GetColumns()->Add(L"Item")))->PutDisplayFilterButton(VARIANT_TRUE);
EXG2ANTTLib::IColumnPtr var_Column = ((EXG2ANTTLib::IColumnPtr)(spG2antt1->GetColumns()->Add(L"Pos")));
	var_Column->PutAllowSizing(VARIANT_FALSE);
	var_Column->PutAllowSort(VARIANT_FALSE);
	var_Column->PutWidth(32);
	var_Column->PutFormatColumn(L"1 apos ``");
	var_Column->PutPosition(0);
EXG2ANTTLib::IItemsPtr var_Items = spG2antt1->GetItems();
	var_Items->AddItem("Item A");
	var_Items->AddItem("Item B");
	var_Items->AddItem("Item C");
/*
	Copy and paste the following directives to your header file as
	it defines the namespace 'stdole' for the library: 'OLE Automation'

	#import <stdole2.tlb>
*/
spG2antt1->PutFilterBarFont(IFontDispPtr(((stdole::FontPtr)(spG2antt1->GetFont()))));
spG2antt1->PutFilterBarCaption(L"`<b><r>` + value + `</b><fgcolor=808080>` + ( matchitemcount < 0 ? `<off -4> ` + abs(matchitemcount + 1) + ` result(s)` : ``)");
spG2antt1->PutFilterBarPromptVisible(EXG2ANTTLib::FilterBarVisibleEnum(EXG2ANTTLib::exFilterBarCompact | EXG2ANTTLib::exFilterBarSingleLine | EXG2ANTTLib::exFilterBarCaptionVisible | EXG2ANTTLib::exFilterBarVisible | EXG2ANTTLib::exFilterBarPromptVisible));
EXG2ANTTLib::IColumnPtr var_Column1 = spG2antt1->GetColumns()->GetItem(long(0));
	var_Column1->PutFilterType(EXG2ANTTLib::exFilter);
	var_Column1->PutFilter(L"Item A|Item B");
spG2antt1->ApplyFilter();
spG2antt1->EndUpdate();

2006
How can I get the number of results being shown in the control's filter bar (sample 1)

// AddItem event - Occurs after a new Item has been inserted to Items collection.
void OnAddItemG2antt1(long   Item)
{
	/*
		Copy and paste the following directives to your header file as
		it defines the namespace 'EXG2ANTTLib' for the library: 'ExG2antt 1.0 Control Library'
		#import <ExG2antt.dll>
		using namespace EXG2ANTTLib;
	*/
	EXG2ANTTLib::IG2anttPtr spG2antt1 = GetDlgItem(IDC_G2ANTT1)->GetControlUnknown();
	spG2antt1->GetItems()->AddBar(Item,"Task",COleDateTime(2017,12,4,0,00,00).operator DATE(),COleDateTime(2017,12,14,0,00,00).operator DATE(),vtMissing,vtMissing);
}

EXG2ANTTLib::IG2anttPtr spG2antt1 = GetDlgItem(IDC_G2ANTT1)->GetControlUnknown();
spG2antt1->BeginUpdate();
EXG2ANTTLib::IChartPtr var_Chart = spG2antt1->GetChart();
	var_Chart->PutLevelCount(2);
	var_Chart->PutFirstVisibleDate(COleDateTime(2017,12,2,0,00,00).operator DATE());
	var_Chart->PutPaneWidth(VARIANT_FALSE,256);
((EXG2ANTTLib::IColumnPtr)(spG2antt1->GetColumns()->Add(L"Item")))->PutDisplayFilterButton(VARIANT_TRUE);
EXG2ANTTLib::IColumnPtr var_Column = ((EXG2ANTTLib::IColumnPtr)(spG2antt1->GetColumns()->Add(L"Pos")));
	var_Column->PutAllowSizing(VARIANT_FALSE);
	var_Column->PutAllowSort(VARIANT_FALSE);
	var_Column->PutWidth(32);
	var_Column->PutFormatColumn(L"1 apos ``");
	var_Column->PutPosition(0);
EXG2ANTTLib::IItemsPtr var_Items = spG2antt1->GetItems();
	var_Items->AddItem("Item A");
	var_Items->AddItem("Item B");
	var_Items->AddItem("Item C");
/*
	Copy and paste the following directives to your header file as
	it defines the namespace 'stdole' for the library: 'OLE Automation'

	#import <stdole2.tlb>
*/
spG2antt1->PutFilterBarFont(IFontDispPtr(((stdole::FontPtr)(spG2antt1->GetFont()))));
spG2antt1->PutFilterBarCaption(L"`<b>` + value + `</b><r><fgcolor=808080>` + ( matchitemcount < 0 ? abs(matchitemcount + 1) + ` result(s)` : ``)");
spG2antt1->PutFilterBarPromptVisible(EXG2ANTTLib::FilterBarVisibleEnum(EXG2ANTTLib::exFilterBarCaptionVisible | EXG2ANTTLib::exFilterBarVisible | EXG2ANTTLib::exFilterBarPromptVisible));
EXG2ANTTLib::IColumnPtr var_Column1 = spG2antt1->GetColumns()->GetItem(long(0));
	var_Column1->PutFilterType(EXG2ANTTLib::exFilter);
	var_Column1->PutFilter(L"Item A|Item B");
spG2antt1->ApplyFilter();
spG2antt1->EndUpdate();

2005
FilterBarCaption Predefined Keywords

// AddItem event - Occurs after a new Item has been inserted to Items collection.
void OnAddItemG2antt1(long   Item)
{
	/*
		Copy and paste the following directives to your header file as
		it defines the namespace 'EXG2ANTTLib' for the library: 'ExG2antt 1.0 Control Library'
		#import <ExG2antt.dll>
		using namespace EXG2ANTTLib;
	*/
	EXG2ANTTLib::IG2anttPtr spG2antt1 = GetDlgItem(IDC_G2ANTT1)->GetControlUnknown();
	spG2antt1->GetItems()->AddBar(Item,"Task",COleDateTime(2017,12,4,0,00,00).operator DATE(),COleDateTime(2017,12,14,0,00,00).operator DATE(),vtMissing,vtMissing);
}

// AfterExpandItem event - Fired after an item is expanded (collapsed).
void OnAfterExpandItemG2antt1(long   Item)
{
	EXG2ANTTLib::IG2anttPtr spG2antt1 = GetDlgItem(IDC_G2ANTT1)->GetControlUnknown();
	spG2antt1->Refresh();
}

EXG2ANTTLib::IG2anttPtr spG2antt1 = GetDlgItem(IDC_G2ANTT1)->GetControlUnknown();
spG2antt1->BeginUpdate();
EXG2ANTTLib::IChartPtr var_Chart = spG2antt1->GetChart();
	var_Chart->PutLevelCount(2);
	var_Chart->PutFirstVisibleDate(COleDateTime(2017,12,2,0,00,00).operator DATE());
	var_Chart->PutPaneWidth(VARIANT_FALSE,256);
spG2antt1->PutLinesAtRoot(EXG2ANTTLib::exLinesAtRoot);
((EXG2ANTTLib::IColumnPtr)(spG2antt1->GetColumns()->Add(L"Item")))->PutDisplayFilterButton(VARIANT_TRUE);
EXG2ANTTLib::IColumnPtr var_Column = ((EXG2ANTTLib::IColumnPtr)(spG2antt1->GetColumns()->Add(L"Check")));
	EXG2ANTTLib::IEditorPtr var_Editor = var_Column->GetEditor();
		var_Editor->PutEditType(EXG2ANTTLib::CheckValueType);
		var_Editor->PutOption(EXG2ANTTLib::exCheckValue2,long(1));
	var_Column->PutDisplayFilterButton(VARIANT_TRUE);
	var_Column->PutDisplayFilterPattern(VARIANT_FALSE);
	var_Column->PutFilterType(EXG2ANTTLib::exCheck);
EXG2ANTTLib::IColumnPtr var_Column1 = ((EXG2ANTTLib::IColumnPtr)(spG2antt1->GetColumns()->Add(L"Pos")));
	var_Column1->PutAllowSizing(VARIANT_FALSE);
	var_Column1->PutAllowSort(VARIANT_FALSE);
	var_Column1->PutWidth(32);
	var_Column1->PutFormatColumn(L"1 apos ``");
	var_Column1->PutPosition(0);
EXG2ANTTLib::IItemsPtr var_Items = spG2antt1->GetItems();
	var_Items->AddItem("Item A");
	long h = var_Items->AddItem("Item B");
	var_Items->PutCellState(var_Items->InsertItem(h,vtMissing,"Sub-Item B1"),long(1),1);
	var_Items->InsertItem(h,vtMissing,"Sub-Item B2");
	var_Items->PutExpandItem(h,VARIANT_TRUE);
	var_Items->AddItem("Item C");
spG2antt1->PutFilterInclude(EXG2ANTTLib::exItemsWithChilds);
/*
	Copy and paste the following directives to your header file as
	it defines the namespace 'stdole' for the library: 'OLE Automation'

	#import <stdole2.tlb>
*/
spG2antt1->PutFilterBarFont(IFontDispPtr(((stdole::FontPtr)(spG2antt1->GetFont()))));
spG2antt1->PutFilterBarCaption(_bstr_t("`<fgcolor=0000FF><i>value/current</i></fgcolor>: <fgcolor=808080>` + value + `</fgcolor>` + `<br><fgcolor=0000FF><i>available</") +
"i></fgcolor>: ` + available + `<br><fgcolor=0000FF><i>allui</i></fgcolor>: ` + allui + `<br><fgcolor=0000FF><i>all</i></fgcolor>" +
": ` + all + `<br><fgcolor=0000FF><i>itemcount</i></fgcolor>: <fgcolor=808080>` + itemcount + `</fgcolor>`+ `<br><fgcolor=0000FF>" +
"<i>visibleitemcount</i></fgcolor>: <fgcolor=808080>` + visibleitemcount + `</fgcolor>`+ `<br><fgcolor=0000FF><i>matchitemcount</" +
"i></fgcolor>: <fgcolor=808080>` + matchitemcount + `</fgcolor>`+ `<br><fgcolor=0000FF><i>promptpattern</i></fgcolor>: <fgcolor=8" +
"08080>` + promptpattern + `</fgcolor>`+ `<br><fgcolor=0000FF><i>leafitemcount</i></fgcolor>: <fgcolor=808080>` + leafitemcount +" +
" `</fgcolor>`");
spG2antt1->PutFilterBarPromptPattern(L"B");
spG2antt1->PutFilterBarPromptVisible(EXG2ANTTLib::FilterBarVisibleEnum(EXG2ANTTLib::exFilterBarCaptionVisible | EXG2ANTTLib::exFilterBarVisible | EXG2ANTTLib::exFilterBarPromptVisible));
EXG2ANTTLib::IColumnPtr var_Column2 = spG2antt1->GetColumns()->GetItem(long(0));
	var_Column2->PutFilterType(EXG2ANTTLib::exFilter);
	var_Column2->PutFilter(L"Item A|Item B");
spG2antt1->ApplyFilter();
spG2antt1->EndUpdate();

2004
I am using filter prompt feature, and also column's filter, just wondering if possible to compact displaying the filter bar so it won't show on multiple lines

// AddItem event - Occurs after a new Item has been inserted to Items collection.
void OnAddItemG2antt1(long   Item)
{
	/*
		Copy and paste the following directives to your header file as
		it defines the namespace 'EXG2ANTTLib' for the library: 'ExG2antt 1.0 Control Library'
		#import <ExG2antt.dll>
		using namespace EXG2ANTTLib;
	*/
	EXG2ANTTLib::IG2anttPtr spG2antt1 = GetDlgItem(IDC_G2ANTT1)->GetControlUnknown();
	spG2antt1->GetItems()->AddBar(Item,"Task",COleDateTime(2017,12,4,0,00,00).operator DATE(),COleDateTime(2017,12,14,0,00,00).operator DATE(),vtMissing,vtMissing);
}

EXG2ANTTLib::IG2anttPtr spG2antt1 = GetDlgItem(IDC_G2ANTT1)->GetControlUnknown();
spG2antt1->BeginUpdate();
EXG2ANTTLib::IChartPtr var_Chart = spG2antt1->GetChart();
	var_Chart->PutLevelCount(2);
	var_Chart->PutFirstVisibleDate(COleDateTime(2017,12,2,0,00,00).operator DATE());
	var_Chart->PutPaneWidth(VARIANT_FALSE,256);
((EXG2ANTTLib::IColumnPtr)(spG2antt1->GetColumns()->Add(L"Item")))->PutDisplayFilterButton(VARIANT_TRUE);
EXG2ANTTLib::IColumnPtr var_Column = ((EXG2ANTTLib::IColumnPtr)(spG2antt1->GetColumns()->Add(L"Pos")));
	var_Column->PutAllowSizing(VARIANT_FALSE);
	var_Column->PutAllowSort(VARIANT_FALSE);
	var_Column->PutWidth(32);
	var_Column->PutFormatColumn(L"1 apos ``");
	var_Column->PutPosition(0);
EXG2ANTTLib::IItemsPtr var_Items = spG2antt1->GetItems();
	var_Items->AddItem("Item A");
	var_Items->AddItem("Item B");
	var_Items->AddItem("Item C");
/*
	Copy and paste the following directives to your header file as
	it defines the namespace 'stdole' for the library: 'OLE Automation'

	#import <stdole2.tlb>
*/
spG2antt1->PutFilterBarFont(IFontDispPtr(((stdole::FontPtr)(spG2antt1->GetFont()))));
spG2antt1->PutFilterBarCaption(L"`<r><i><fgcolor=808080><upline><solidline><sha ;;0>` + value");
spG2antt1->PutFilterBarPromptPattern(L"B");
spG2antt1->PutFilterBarPromptVisible(EXG2ANTTLib::FilterBarVisibleEnum(EXG2ANTTLib::exFilterBarCompact | EXG2ANTTLib::exFilterBarSingleLine | EXG2ANTTLib::exFilterBarVisible | EXG2ANTTLib::exFilterBarPromptVisible));
EXG2ANTTLib::IColumnPtr var_Column1 = spG2antt1->GetColumns()->GetItem(long(0));
	var_Column1->PutFilterType(EXG2ANTTLib::exFilter);
	var_Column1->PutFilter(L"Item A|Item B");
spG2antt1->ApplyFilter();
spG2antt1->EndUpdate();

2003
Just wondering if it is possible to show the filter bar's close button on the right ( sample 2 )

// AddItem event - Occurs after a new Item has been inserted to Items collection.
void OnAddItemG2antt1(long   Item)
{
	/*
		Copy and paste the following directives to your header file as
		it defines the namespace 'EXG2ANTTLib' for the library: 'ExG2antt 1.0 Control Library'
		#import <ExG2antt.dll>
		using namespace EXG2ANTTLib;
	*/
	EXG2ANTTLib::IG2anttPtr spG2antt1 = GetDlgItem(IDC_G2ANTT1)->GetControlUnknown();
	spG2antt1->GetItems()->AddBar(Item,"Task",COleDateTime(2017,12,4,0,00,00).operator DATE(),COleDateTime(2017,12,14,0,00,00).operator DATE(),vtMissing,vtMissing);
}

EXG2ANTTLib::IG2anttPtr spG2antt1 = GetDlgItem(IDC_G2ANTT1)->GetControlUnknown();
spG2antt1->BeginUpdate();
EXG2ANTTLib::IChartPtr var_Chart = spG2antt1->GetChart();
	var_Chart->PutLevelCount(2);
	var_Chart->PutFirstVisibleDate(COleDateTime(2017,12,2,0,00,00).operator DATE());
	var_Chart->PutPaneWidth(VARIANT_FALSE,256);
((EXG2ANTTLib::IColumnPtr)(spG2antt1->GetColumns()->Add(L"Item")))->PutDisplayFilterButton(VARIANT_TRUE);
EXG2ANTTLib::IColumnPtr var_Column = ((EXG2ANTTLib::IColumnPtr)(spG2antt1->GetColumns()->Add(L"Pos")));
	var_Column->PutAllowSizing(VARIANT_FALSE);
	var_Column->PutAllowSort(VARIANT_FALSE);
	var_Column->PutWidth(32);
	var_Column->PutFormatColumn(L"1 apos ``");
	var_Column->PutPosition(0);
EXG2ANTTLib::IItemsPtr var_Items = spG2antt1->GetItems();
	var_Items->AddItem("Item A");
	var_Items->AddItem("Item B");
	var_Items->AddItem("Item C");
spG2antt1->PutFilterBarPromptVisible(EXG2ANTTLib::FilterBarVisibleEnum(EXG2ANTTLib::exFilterBarShowCloseOnRight | EXG2ANTTLib::exFilterBarToggle | EXG2ANTTLib::exFilterBarPromptVisible));
spG2antt1->PutFilterBarPrompt(_bstr_t(spG2antt1->FormatABC(L"`<r>` + value",spG2antt1->GetFilterBarPrompt(),vtMissing,vtMissing)));
spG2antt1->EndUpdate();

2002
Just wondering if it is possible to show the filter bar's close button on the right ( sample 1 )

// AddItem event - Occurs after a new Item has been inserted to Items collection.
void OnAddItemG2antt1(long   Item)
{
	/*
		Copy and paste the following directives to your header file as
		it defines the namespace 'EXG2ANTTLib' for the library: 'ExG2antt 1.0 Control Library'
		#import <ExG2antt.dll>
		using namespace EXG2ANTTLib;
	*/
	EXG2ANTTLib::IG2anttPtr spG2antt1 = GetDlgItem(IDC_G2ANTT1)->GetControlUnknown();
	spG2antt1->GetItems()->AddBar(Item,"Task",COleDateTime(2017,12,4,0,00,00).operator DATE(),COleDateTime(2017,12,14,0,00,00).operator DATE(),vtMissing,vtMissing);
}

EXG2ANTTLib::IG2anttPtr spG2antt1 = GetDlgItem(IDC_G2ANTT1)->GetControlUnknown();
spG2antt1->BeginUpdate();
EXG2ANTTLib::IChartPtr var_Chart = spG2antt1->GetChart();
	var_Chart->PutLevelCount(2);
	var_Chart->PutFirstVisibleDate(COleDateTime(2017,12,2,0,00,00).operator DATE());
	var_Chart->PutPaneWidth(VARIANT_FALSE,256);
spG2antt1->PutRightToLeft(VARIANT_TRUE);
((EXG2ANTTLib::IColumnPtr)(spG2antt1->GetColumns()->Add(L"Item")))->PutDisplayFilterButton(VARIANT_TRUE);
EXG2ANTTLib::IColumnPtr var_Column = ((EXG2ANTTLib::IColumnPtr)(spG2antt1->GetColumns()->Add(L"Pos")));
	var_Column->PutAllowSizing(VARIANT_FALSE);
	var_Column->PutAllowSort(VARIANT_FALSE);
	var_Column->PutWidth(32);
	var_Column->PutFormatColumn(L"1 apos ``");
	var_Column->PutPosition(0);
EXG2ANTTLib::IItemsPtr var_Items = spG2antt1->GetItems();
	var_Items->AddItem("Item A");
	var_Items->AddItem("Item B");
	var_Items->AddItem("Item C");
spG2antt1->PutFilterBarPromptVisible(EXG2ANTTLib::FilterBarVisibleEnum(EXG2ANTTLib::exFilterBarToggle | EXG2ANTTLib::exFilterBarPromptVisible));
spG2antt1->EndUpdate();

2001
How can I change the visual appearance of the filter bar's close button (EBN)

// AddItem event - Occurs after a new Item has been inserted to Items collection.
void OnAddItemG2antt1(long   Item)
{
	/*
		Copy and paste the following directives to your header file as
		it defines the namespace 'EXG2ANTTLib' for the library: 'ExG2antt 1.0 Control Library'
		#import <ExG2antt.dll>
		using namespace EXG2ANTTLib;
	*/
	EXG2ANTTLib::IG2anttPtr spG2antt1 = GetDlgItem(IDC_G2ANTT1)->GetControlUnknown();
	spG2antt1->GetItems()->AddBar(Item,"Task",COleDateTime(2017,12,4,0,00,00).operator DATE(),COleDateTime(2017,12,14,0,00,00).operator DATE(),vtMissing,vtMissing);
}

EXG2ANTTLib::IG2anttPtr spG2antt1 = GetDlgItem(IDC_G2ANTT1)->GetControlUnknown();
spG2antt1->BeginUpdate();
EXG2ANTTLib::IChartPtr var_Chart = spG2antt1->GetChart();
	var_Chart->PutLevelCount(2);
	var_Chart->PutFirstVisibleDate(COleDateTime(2017,12,2,0,00,00).operator DATE());
	var_Chart->PutPaneWidth(VARIANT_FALSE,256);
EXG2ANTTLib::IAppearancePtr var_Appearance = spG2antt1->GetVisualAppearance();
	var_Appearance->Add(1,_bstr_t("gBFLBCJwBAEHhEJAAEhABHQDg6AADACAxRDgMQBQKAAzAJBIYhiG4cYCgMZhXDOCYXABCEYRXBIZQ7BKNIxjSJ5BhIAAyDSJMjSRJUEhqGCWYDleYYYAKHIMQLOg7IJ") +
"jyI4/SJAYCydKAWhxIaZKJHCZoEDaTAADCNVAQp6MEIJVbVEI0e79OgBLp/Z7kECIJJAaRjHQdJxGLA8EhtCQhCZteK6SgMKJYXhWQYRXI1JwvMBrWrdQjiOYELQtMKm" +
"SZNLYGG4dR5SVJbcYhSYsRRFMoyDIOXYDLKsdYqSpXIThObEGgaPqJYjsUjCMKnR7HVIURrBPC9TBPE69ZgmC6ucKPX51ShKFaBWDZcwFAS+UBuYCAILiEAQGZ1XT8OR" +
"OicbgJgSTJRlCaZeDsHY7QGR4xkSYp3CaExZAQMgalQYAwjCAAfBANxcA2TgKAUOpDCGFhKg0RpXCwCwDHQHQHEyAIkCkOhbFOGA8A8DohBgRg9AccZcn8EpEjMLI2C2" +
"DYxAgQgvAIUIVkoAAPBQDJlECTZ3CCYwDACQwUA8A5MCAWAWDiQi4l8aQOEgLJuBgBgDmYFAzEoIoIl0WALgKYJbBABADAAHgHg8VAMmqCQQDMXABAATYwTmNwBDATJX" +
"AiAgjHmNQ5lgQ5QEQEQMmcWg/GwD5ylyNw2gMcJcjsBgBgOQQDDhRpVAMMwnDBFw1B0Ax8D0DxOmmJJIGQTY5hGMAwkwM4CAYLZAmAOJnAqAojiIGg6iieYkmeAYOHaK" +
"JDCyCwjH6AoggsQpQliAJLhgaJ0CESBTnyDwjk+cg4g4P5IHIHJ+BWRRzlYWAxiOUxihsY4KjKLJRGqC44FCegkkkM58iAKAPnIWIWD8SRSFSfQnkmewUhYP4GiGKJ7G" +
"0TIbCSUoggqUo0lAQ4LnEcBcD8Coiiif4nE+eAAn2HpOkcFJqi4T5SkyMw/kqQown8IBIBOdA+A+DJrBqVxXEqYo4lCApLhGHBnD8S4ymyfxmg+cwQkQP5egOUZIWoEA" +
"kjIeIPBMBJBD+TBjBifwvkuc58hQJQPmFrYykkchclSApKjGOBuD+TRDFCfw3mmIxNi8FxFlOXhVC4aYDFyPgvg2YBcBcLZGCGCJ0DSLRzGSWQ/lmY5+mEP5gmMDBZRS" +
"MRsFsOxMhMJJ/DsTpTnwaQaE+N5ojuNhdEYNI5C4TZJO1GRDmCaxnA2Yx4n8IpIjOTBQBQC5TgyYw7gUYRYikC0BYRwsDQBoB8eA6Q2hsE0BUXgywZtYCyHMKwnxSAhA" +
"QHkIQhRrBaDsCwA4ERiB2EWAIYIXhhiVEgAEUYwwYjyASLge4FhHgRDkM8OQih0jWPkGgBBAQ");
((EXG2ANTTLib::IColumnPtr)(spG2antt1->GetColumns()->Add(L"Item")))->PutDisplayFilterButton(VARIANT_TRUE);
EXG2ANTTLib::IColumnPtr var_Column = ((EXG2ANTTLib::IColumnPtr)(spG2antt1->GetColumns()->Add(L"Pos")));
	var_Column->PutAllowSizing(VARIANT_FALSE);
	var_Column->PutAllowSort(VARIANT_FALSE);
	var_Column->PutWidth(32);
	var_Column->PutFormatColumn(L"1 apos ``");
	var_Column->PutPosition(0);
EXG2ANTTLib::IItemsPtr var_Items = spG2antt1->GetItems();
	var_Items->AddItem("Item A");
	var_Items->AddItem("Item B");
	var_Items->AddItem("Item C");
spG2antt1->PutFilterBarPromptVisible(EXG2ANTTLib::FilterBarVisibleEnum(EXG2ANTTLib::exFilterBarToggle | EXG2ANTTLib::exFilterBarPromptVisible));
spG2antt1->PutBackground(EXG2ANTTLib::exFooterFilterBarButton,0x1000000);
spG2antt1->EndUpdate();